配置檔結構
my.cnf 採 INI 格式,分區段:[mysqld](Server)、[client]、[mysql]、[mysqldump]、[myisamchk] 等。Server 端參數僅在 [mysqld] 生效。
一、目錄與檔案路徑
| 參數 | 說明 | 範例 |
basedir | 安裝根目錄 | /usr/local/mysql |
datadir | 資料目錄 | /data/mysql |
tmpdir | 臨時檔案目錄(可多目錄輪詢) | /tmp:/var/tmp |
socket | Unix 域套接字檔 | /var/lib/mysql/mysql.sock |
pid-file | 進程 PID 檔 | /var/run/mysqld/mysqld.pid |
character-sets-dir | 字元集檔案目錄 | /usr/local/mysql/share/charsets |
lower_case_table_names | 0=區分大小寫, 1=不區分(Windows預設), 2=存儲小寫比較不區分 | 1 |
二、語言與字元集
| 參數 | 說明 |
character-set-server | 預設字元集(取代舊 default-character-set) |
collation-server | 預設排序規則 |
language | 錯誤訊息語言(如 english/chinese) |
三、網路、通訊與安全
| 參數 | 說明 |
port | TCP 監聽埠(預設 3306) |
bind-address | 綁定 IP(0.0.0.0 監聽所有,127.0.0.1 僅本機) |
skip-networking | 禁用 TCP,僅允許 Socket/Named Pipe |
enable-named-pipe | Windows 開啟命名管道 |
shared-memory | Windows 共享記憶體通訊 |
skip-name-resolve | 跳過 DNS 反查,加速連線、避免 DNS 故障 |
skip-host-cache | 禁用主機名快取 |
max_connections | 最大同時連線數 |
back_log | TCP 連線請求隊列長度 |
max_allowed_packet | 最大封包大小 |
wait_timeout | 非互動連線空閒斷開秒數 |
interactive_timeout | 互動連線空閒斷開秒數 |
old_passwords | 啟用舊密碼雜湊(不建議,5.7+ 移除) |
secure-auth | 拒絕舊密碼客戶端連線 |
ssl-ca/ssl-cert/ssl-key | SSL 憑證路徑 |
local-infile | 允許 LOAD DATA LOCAL INFILE |
safe-user-create | 建立用戶需 INSERT mysql.user 權限 |
user | mysqld 運行用戶(需 root 啟動後切換) |
四、記憶體、快取與優化
| 參數 | 預設 | 說明 |
key_buffer_size | 8M | MyISAM 索引塊快取(所有線程共享) |
table_cache / table_open_cache | 64/2000 | 表快取數(含檔案描述符) |
sort_buffer_size | 2M | 每 Session 排序快取 |
read_buffer_size | 128K | 循序掃描快取 |
read_rnd_buffer_size | 256K | 排序後隨機讀快取 |
join_buffer_size | 128K | 無索引 JOIN 快取 |
bulk_insert_buffer_size | 8M | 批量 INSERT 快取 |
tmp_table_size | 32M | 內部臨時 HEAP 表上限,超過轉 MyISAM 磁碟表 |
max_heap_table_size | 16M | 用戶建立 HEAP 表上限 |
thread_cache_size | 0/自動 | 線程快取數 |
query_cache_size | 0 | 查詢快取大小(5.7 建議 0,8.0 移除) |
query_cache_type | 1 | 0=關, 1=開, 2=按需 |
query_cache_limit | 1M | 單查詢結果快取上限 |
五、InnoDB 專屬參數(核心)
| 參數 | 預設 | 說明 |
innodb_buffer_pool_size | 128M | 資料+索引+鎖+插入緩衝 統一快取,**最關鍵參數** |
innodb_log_file_size | 48M | Redo log 大小,影響寫入效能與恢復時間 |
innodb_log_files_in_group | 2 | Redo log 組數 |
innodb_flush_log_at_trx_commit | 1 | 1=全 ACID, 2=秒級刷盤, 0=最高效但可能丟 1 秒 |
innodb_file_per_table | ON | 獨立表空間,支援 DROP/TRUNCATE 回收空間 |
innodb_flush_method | fdatasync | O_DIRECT 繞過 OS 快取,配合 RAID/電池備援卡 |
innodb_io_capacity | 200 | 磁碟 IOPS 能力,SSD 設 5000+ |
innodb_read_io_threads | 4 | 讀 IO 線程 |
innodb_write_io_threads | 4 | 寫 IO 線程 |
innodb_lock_wait_timeout | 50 | 鎖等待超時秒數 |
innodb_deadlock_detect | ON | 死鎖檢測 |
六、日誌系統
| 參數 | 說明 |
log-error | 錯誤日誌路徑 |
slow_query_log | 開啟慢查詢日誌 (0/1) |
slow_query_log_file | 慢查詢日誌檔案 |
long_query_time | 慢查詢閾值秒數 (預設 10) |
log-queries-not-using-indexes | 記錄未用索引查詢 |
log-bin | 二進位日誌基礎檔名(啟用複寫/時間點恢復必開) |
binlog_format | ROW/STATEMENT/MIXED(推薦 ROW) |
expire_logs_days | Binlog 保留天數 |
max_binlog_size | 單 Binlog 檔案上限 (預設 1G) |
sync_binlog | 1=每次提交同步最安全, 0=OS 決定, N=每 N 次同步 |
general_log | 通用查詢日誌 (審計用,高負載慎開) |
七、複寫參數
| 參數 | 說明 |
server-id | 複寫拓撲唯一 ID (1~2^32-1) |
log-slave-updates | Slave 寫入自身 Binlog(鏈式複寫需開) |
read-only | Slave 唯讀(防誤寫) |
relay-log | 中繼日誌路徑 |
slave-skip-errors | 跳過特定錯誤碼(風險極高,慎用) |
查看當前生效值
SHOW VARIABLES;
SHOW GLOBAL VARIABLES LIKE 'innodb_%';
mysqld --help --verbose | grep -A1 '^basedir'
本手冊涵蓋 MySQL 5.0 核心配置維度,新版本參數多有擴充,請配合官方文檔使用。