MySQL 8.0版本配置 my.cnf / my.ini 各项配置详解_mysql8 my.cnf
1. 核心配置项说明与优化建议
[mysqld] 部分
这是 MySQL 服务端的主要配置段。
datadir
/var/lib/mysql
)。socket
/var/run/mysqld/mysqld.sock
(Linux)。port
3306
,如需多实例需修改。bind-address
0.0.0.0
允许所有远程连接;127.0.0.1
仅允许本地连接。character-set-server
utf8mb4
(支持 Emoji 和更多 Unicode 字符)。collation-server
utf8mb4_unicode_ci
(通用排序规则)。内存与性能优化
innodb_buffer_pool_size
8G
)。独立服务器可更高,但需预留系统和其他进程内存。innodb_log_file_size
1G~4G
,需权衡崩溃恢复时间。大日志提高写入性能,但恢复时间变长。innodb_flush_method
O_DIRECT
(直接写入磁盘,避免双缓存)。innodb_flush_log_at_trx_commit
0
(每秒刷新,性能高,可能丢失1秒数据)1
(默认,完全持久化,安全但性能低)2
(写入OS缓存,系统崩溃可能丢数据)2
,但需权衡数据安全。金融类应用建议 1
。key_buffer_size
16M
或更低。tmp_table_size
max_heap_table_size
64M
)。避免过大导致内存溢出,过小导致磁盘临时表。query_cache_type
0
),8.0 中已移除查询缓存。连接与线程
max_connections
151
)。过高可能导致内存不足(每个连接约占用 256KB~几MB)。结合 thread_cache_size
优化。thread_cache_size
max_connections
的 10%(如 200
)。wait_timeout
interactive_timeout
300
(5分钟),避免长时间空闲连接占用资源。日志与监控
log_error
/var/log/mysql/error.log
,建议开启并定期清理。slow_query_log
1
(开启),结合 long_query_time
(如 2
秒)记录慢查询。log-bin
binlog_expire_logs_seconds
2592000
(30天),根据备份策略调整。general_log
0
(关闭),调试时临时开启。2. 其他重要配置项
innodb_file_per_table
.ibd
文件),便于管理。建议 ON
。skip-name-resolve
transaction_isolation
READ-COMMITTED
)。innodb_lock_wait_timeout
50
。3. 示例配置文件(参考)
[mysqld]
# 基础配置
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
bind-address = 0.0.0.0
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci# 内存优化
innodb_buffer_pool_size = 8G
innodb_log_file_size = 2G
innodb_flush_method = O_DIRECT
tmp_table_size = 64M
max_heap_table_size = 64M# 连接管理
max_connections = 500
thread_cache_size = 50
wait_timeout = 300
interactive_timeout = 300# 日志与监控
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-bin = /var/log/mysql/mysql-bin.log
binlog_expire_logs_seconds = 2592000# InnoDB 高级配置
innodb_file_per_table = ON
innodb_flush_log_at_trx_commit = 2 # 高并发写入场景
transaction_isolation = READ-COMMITTED
4. 调优建议
-
分场景优化:
-
小型应用:降低
innodb_buffer_pool_size
(如 1G)。 -
高并发写入:调整
innodb_flush_log_at_trx_commit=2
和sync_binlog=0
(需权衡数据安全)。 -
大型数据库:增加
innodb_buffer_pool_size
并启用innodb_buffer_pool_instances
(如 8 实例)。
-
-
监控工具:
-
使用
SHOW GLOBAL STATUS
和SHOW ENGINE INNODB STATUS
查看运行状态。 -
工具:
mysqltuner.pl
、Percona Monitoring and Management (PMM)
。
-
-
测试与验证:
-
修改配置后重启 MySQL:
systemctl restart mysql
。 -
使用
sysbench
或实际业务负载测试性能。
-
5. 注意事项
-
备份配置:修改前备份
my.cnf
。 -
逐步调整:每次仅修改一个参数并观察效果。
-
硬件依赖:SSD 可显著提升
innodb_io_capacity
相关参数。