針對 4GB RAM、以 InnoDB 為主、高佇列負載、連接數較少的 MySQL 伺服器,提供生產級 my.cnf 完整配置範本。每項參數附中文詳細註解,涵蓋連接、快取、緩衝區、日誌、InnoDB 專屬設定等核心區塊,可直接部署微調。
#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 僅使用 InnoDB, ACID, 少量連接, 高佇列負載
#TYPE: SYSTEM
#END CONFIG INFO
[client]
# password = [your_password]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
# 連接佇列長度,高併發連接被拒時調大
back_log = 50
# 僅本地 Unix Socket 連接,增強安全(Windows 需啟用 named-pipe)
# skip-networking
# 最大同時連接數(含 1 個 SUPER 保留連接)
max_connections = 100
# 客戶端錯誤嘗試上限,超過則封鎖直到 FLUSH HOSTS
max_connect_errors = 10
# 表快取數量,影響開啟檔案描述符需求
table_cache = 2048
# 關閉外部檔案鎖(效能負面影響,僅多實例共享檔案時啟用)
# external-locking
# 單次封包/請求最大值(大 BLOB 必須調大)
max_allowed_packet = 16M
# Binlog 交易快取大小(大交易調大避免臨時檔)
binlog_cache_size = 1M
# 獨立記憶體表最大容量(防止意外耗盡記憶體)
max_heap_table_size = 64M
# 排序緩衝區(ORDER BY/GROUP BY),每執行緒分配
sort_buffer_size = 8M
# 全聯結優化緩衝區(無索引 JOIN),每執行緒分配
join_buffer_size = 8M
# 執行緒快取數量(減少建立/銷毀開銷)
thread_cache_size = 8
# 並發提示(僅支援 thread_concurrency() 的系統如 Solaris 有效)
thread_concurrency = 8
# 查詢快取大小(相同查詢直接回傳結果)
query_cache_size = 64M
query_cache_limit = 2M -- 單查詢結果超過此值不快取
# 全文索引最小詞長(修改後需 REPAIR TABLE 重建索引)
ft_min_word_len = 4
# 鎖定記憶體防止 swap(需系統支援 memlock())
# memlock
# 預設資料表類型
default_table_type = MYISAM
# 執行緒堆疊大小
thread_stack = 192K
# 交易隔離等級
transaction_isolation = REPEATABLE-READ
# 內部臨時表最大值(超過轉磁碟)
tmp_table_size = 64M
# 二進位日誌(主從複寫、時間點恢復必須啟用)
log-bin = mysql-bin
# 鏈式從庫結構時啟用
# log_slave_updates
# 通用查詢日誌(除錯用,生產環境關閉)
# log
# 警告寫入錯誤日誌
# log_warnings
# 慢查詢日誌
log_slow_queries
long_query_time = 2 -- 超過 2 秒記錄,勿設 1 秒避免噪音
log_long_format -- 記錄未使用索引的查詢
# InnoDB 緩衝池大小(實體記憶體 50-70%,此處 4GB 建議 2-3GB)
innodb_buffer_pool_size = 2G
# InnoDB 記錄檔大小(單檔大小,總量建議緩衝池 25%)
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
# InnoDB 記錄緩衝區
innodb_log_buffer_size = 8M
# InnoDB 資料檔路徑與自動擴充
innodb_data_file_path = ibdata1:10M:autoextend
# InnoDB 檔案 I/O 執行緒
innodb_file_io_threads = 4
# InnoDB 鎖等待超時秒數
innodb_lock_wait_timeout = 50
# InnoDB 提交時刷盤策略:1=每次提交刷盤(最安全),0=每秒刷盤,2=提交寫入OS緩衝每秒刷盤
innodb_flush_log_at_trx_commit = 1
# InnoDB 讀取/寫入 I/O 執行緒(1.0+ 版本)
innodb_read_io_threads = 4
innodb_write_io_threads = 4
/etc/my.cnf:全域設定mysql-data-dir/my.cnf:實例專用設定~/.my.cnf:用戶級設定innodb_buffer_pool_size(專用 DB 伺服器可至 70-80% 實體記憶體)Innodb_buffer_pool_wait_free、Innodb_log_waits 指標微調innodb_flush_log_at_trx_commit = 2 平衡效能與安全FLUSH LOGS 切割 Binlog,配合 expire_logs_days 自動清理