MySQL 配置速查
my.cnf
连接、缓冲池、日志与字符集相关配置项,及常用调优点。
# MySQL 配置速查
## 核心结构
配置通常写在 my.cnf 的 mysqld 段,分为 server / innodb / replication 等分组。
## 高频配置项
- bind-address / port:监听地址与端口
- max_connections:最大连接数,需与线程缓冲的内存占用一起估算
- innodb_buffer_pool_size:InnoDB 缓冲池,最关键的调优点,常设为可用内存的一半以上
- innodb_flush_log_at_trx_commit:事务提交时的日志落盘策略,1 最安全、2 折中、0 最快
- innodb_log_file_size:重做日志大小,影响写入吞吐
- character-set-server / collation-server:字符集与排序规则
- slow_query_log / long_query_time:慢日志开关与阈值
- max_allowed_packet:单包大小上限,大字段或批量插入需调大
## 字符集
新建库表建议显式指定 utf8mb4,避免后期改字符集的表重建成本。排序规则按是否需要大小写敏感选择。
## 常见坑
- 只调 max_connections 不算内存,连接一多把机器压垮
- 慢日志没开,出问题只能靠猜
- 事务里做慢速外部调用,长事务拖住回滚段与元数据锁
- 隐式类型转换导致索引失效,比如字符串列传了数字
- 备份只做逻辑导出,没验证恢复流程是否真的可用
## 排查看什么
SHOW PROCESSLIST、EXPLAIN 看执行计划、SHOW ENGINE INNODB STATUS 看锁与等待。