一份針對 32GB+ 記憶體、SSD 儲存、高併發 OLTP 負載的生產級 my.cnf 完整註解版,涵蓋連線層、緩衝區、Binlog、InnoDB 核心、慢查詢、Query Cache、MyISAM 相容、導出工具等全維度參數。
[mysqld]
skip_name_resolve # 禁用 DNS 反查,加速連線
skip_networking # 僅允許 Unix Socket (內網專用時啟用)
max_connections=20480 # 最大連線數
thread_cache_size=64 # 執行緒快取,1G→8, 2G→16, 4G+→64
back_log=512 # 監聽佇列長度
max_allowed_packet=8M # 封包上限
innodb_buffer_pool_size=8G # 純 DB 機建議 60-80% 實體記憶體
innodb_buffer_pool_instances=8 # 多實例減少鎖爭用
innodb_file_per_table=1 # 獨立表空間,利於回收空間
innodb_flush_method=O_DIRECT # 繞過 OS 快取,減少雙重緩衝
innodb_flush_log_at_trx_commit=0 # 0=每秒刷盤 (高效能、風險 1s 數據) ; 1=全 ACID
innodb_log_buffer_size=8M # 交易日誌緩衝
innodb_log_file_size=1G # Redo Log 檔案大小
innodb_log_files_in_group=2
innodb_io_capacity=100 # SSD 可調 500-2000
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_thread_concurrency=16 # 0=自動,建議 2*(CPU核心+磁碟數)
log-bin=mysql-bin
binlog_format=mixed # ROW+STATEMENT 混合,兼容效能與一致性
sync_binlog=0 # 0=OS 管理,1=每提交同步 (最安全)
max_binlog_size=1G
binlog_cache_size=2M
expire_logs_days=7 # 自動清理舊 Binlog
slow_query_log=1
long_query_time=2
slow_query_log_file=/data/mysql/slowlog/slow.log
log_queries_not_using_indexes=1
query_cache_type=1
query_cache_size=256M
query_cache_limit=1M
query_cache_min_res_unit=4K
character_set_server=utf8mb4
default_authentication_plugin=mysql_native_password
open_files_limit=65535
table_open_cache=4096
sort_buffer_size=2M
join_buffer_size=256K
read_rnd_buffer_size=4M
pt-query-digest 分析 Top N。