[mysqld]
skip-external-locking
skip-name-resolve
max_connections = 1024
query_cache_size = 16M
sort_buffer_size = 1M
table_cache = 256
innodb_buffer_pool_size = 128M
innodb_additional_mem_pool_size = 4M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 1
service mysqld stoprm -f /var/lib/mysql/ib_logfile*service mysqld start否則報錯 InnoDB: Error: log file ./ib_logfile0 is of different size 導致啟動失敗。
| 參數 | 推薦值/原則 | 說明 |
|---|---|---|
| innodb_buffer_pool_size | 物理記憶體 70%-80%(專用 DB),上限 2G | 最關鍵參數,緩存索引、數據、插入緩衝。太大導致 Swap、太小多磁碟 I/O。不可動態修改。 |
| innodb_additional_mem_pool_size | 16M 通常足夠 | 存放內部數據字典。表多可適當增大,錯誤日誌會提示自動增長。 |
| innodb_log_file_size | buffer_pool 的 25%-50%,總大小(組內文件和)≤ 2G | 影響寫入速度、事務大小、崩潰恢復時間。修改需刪舊日誌重啟。 |
| innodb_log_files_in_group | 2-3 個 | 循環寫入,提高並發寫入能力。 |
| innodb_log_buffer_size | 2-8M,建議 3M | 事務提交前的日誌緩衝,每秒刷盤一次。過大無益。 |
| innodb_flush_log_at_trx_commit | 1(最安全) / 0 或 2(高效能,可能丟 1 秒數據) | 1=每提交刷盤;2=寫文件不刷盤,每秒刷盤;0=每秒寫並刷盤。主庫建議 1,從庫可放寬。 |
mysqladmin variables | grep innodb 查看生效值。