萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 5.5 InnoDB 存儲引擎配置優化實戰(CentOS 1G 記憶體)

基礎配置(/etc/my.cnf)

[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

修改日誌大小後的重啟陷阱與解法

  1. 先停服務:service mysqld stop
  2. 刪除舊日誌:rm -f /var/lib/mysql/ib_logfile*
  3. 再啟動: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 查看生效值。

copyright © 萬盛學電腦網 all rights reserved