Tag: MariaDB

MySQL 開啟 innodb_file_per_table 及轉換現有資料表

MySQL 會將 InnoDB 的資料表內的資料及索引全部儲存到共享空間, 即是所有 InnoDB 資料表的資料全都放到 ibdata1 檔案內。而 innodb_file_per_table 就可以設定每個資料表, 使用獨立表空間儲存資料, 即是每個資料表有屬於自己的 .ibd 檔案。這樣做的好處是對日後的管理較容易, 在 MySQL 5.6.6 開始, innodb_file_per_table 預設是開啟, 而在 5.6.6 前的版本預設是關閉的, 要查詢目前 MySQL 的 innodb_file_per_table 是否開啟, 可以查看 …

列出所有 MySQL 資料庫大小

當發現 MySQL / MariaDB 伺服器的硬碟使用空間越來越多, 想找出那一個資料庫佔用最多空間時, 以前用 MyISAM 儲存引擎時, 可以直接用 du 指令查看資料庫目錄。但如果是用 InnoDB 的話, 用 du 指令就沒有用了。要找出所有 MySQL 資料庫的空間大小, 可以用 MySQL 的 root 帳號登入 MySQL CLI 或 PHPMyAdmin, 然後執行以下 SQL …

Apache Log 儲存到 MySQL

Apache 預設會將 Log 記錄檔儲存到文字檔,一般會在 logs/ 目錄,或者 /var/log/httpd/ 目錄。將 Apache Log 儲存到 MySQL 除了可以方便過濾記錄檔內資訊外,也可以實現多個 Apache Log 集中管理。以前試過自己寫 Shell Script 將 Log 插入 MySQL,但原來已經有 Apache Module 可以做這件事,十分方便。以下是 Apache 設定將 Log 儲存到 MySQL …

MySQL 完整複製資料表

當需要將 MySQL 資料表完整複製時, 如果資料表是使用 MyISAM 儲存引擎, 可以直接停止 MySQL 伺服器, 再將資料表的 .MYD 及 MYI 檔案複製。但如果資料表是 InnoDB, 或者不想停止 MySQL 運作, 除了用傳統的備份方法外, MySQL 已經內建了複製的功能, 具體做法如下。假設舊資料表是 old_table, 新資料表是 new_table, 可以執行以下 SQL Query:用這種方法複製的資料表, 會將資料表結構, 資料及 …

MySQL 換算 Unix Timestamp 日期時間

在多時寫程式都會用 Unix Timestamp 儲存時間,好處是可以很簡單作日期計算,以及用不同格式顯示日期。以前儲存在 MySQL 的日期時間,會擷取後用 PHP 的 date() 函式顯示,但 MySQL 已經內置了用作換算 Unix Timestamp 的功能,用起來很方便,以下記錄一下用法。UNIX_TIMESTAMP() — 取得目錄 Unix Timestamp:以前習慣在 PHP 用 time() 函式插入 Unix Timestamp 到 MySQL,在 SQL Query 裡面用 …

同時安裝 MySQL 及 MariaDB

MariaDB 是 MySQL 的替代產品, 也是 RHEL 7 及 CentOS 7 的預設資料庫系統。有時需要在 MariaDB 及 MySQL 之間做測試, 或者在不同版本 MySQL 之間做測試, 同時安裝及運行 MariaDB 及 MySQL 會很方便, 以下紀錄一下在主機內同時安裝 MariaDB 及 MySQL 運行, 當然如果有需要, 也可以按此方法安裝 …

MySQL 檢查欄位是否 NULL 或空白

有時需要在 MySQL 資料庫內,檢查欄位的值是否 NULL,這個可以使用 MySQL 內建檢查 NULL 的功能,分別是 “IS NULL” 及 “IS NOT NULL”, 以下是用法:select 資料表 table_name,欄位 col_name 是 NULL 的紀錄: select 資料表 table_name,欄位 col_name 不是 NULL 的記錄: 如果想 select …

Shell Script 連接 MySQL 安全寫法

在 Shell Script 連接 MySQL, 可以用以下語句實現: $ mysql -u db_user -pdb_password db_name -e ‘sql_query’ 如果系統內沒有其他使用者,這個方法沒什麼問題,但如果系統有其他使用者,在執行 Shell Script 時,其他使用者便可以用 ps 這類指令,看到正在連接 MySQL 的使用者名稱及密碼。較安全的方法是將 MySQL 使用者名稱及密碼儲存到家目錄的 .my.cnf 檔案,那便不用在 Shell Script 輸入 -P …

安裝 MySQL 後的優化

以下是安裝 MySQL 後可以嘗試的優化項目,建議逐樣項目修改,以檢視每個項目的優化成效,而大部份的設定可以在運行中 MySQL 設定,不用重新啟動 MySQL。innodb_buffer_pool_size: 這個設定是 innodb 儲存引擎資料庫,所使用的資料及索引快取,根據記憶體的大小䀆量設定大一點,可以減低讀取資料時從硬碟讀取的次數。如果是獨立的 MySQL 伺服器,可以這樣設定:系統 8GB 記憶體: 5GB – 6GB 系統 32GB 記憶體: 20GB – 25GB 系統 128GB 記憶體: 100GB – 120GBinnodb_log_file_size: 這是 redo …