MariaDB/MySQL my.cnf 配置文件详解与优化指南
本文深入解析 MariaDB/MySQL 的 my.cnf 配置文件,重点讲解服务端核心参数调整、InnoDB 存储引擎优化及主从复制部署方案。通过合理配置内存缓冲、日志刷新策略及并发线程数,显著提升数据库在高负载下的响应速度与数据安全性。
配置文件基础结构与加载顺序
MariaDB 在启动时会按特定顺序读取配置文件。通常默认路径包括 /etc/my.cnf、/etc/mysql/my.cnf 等。用户可以将模板文件拷贝至对应位置并重命名。若要确认当前系统实际加载了哪些配置文件,可执行命令:
my_print_defaults --help
配置文件分为多个节(Section),不同节的参数由不同的客户端或组件读取:
- [client]:所有通用客户端读取的默认参数(如端口、socket 路径)。
- [mysqld]:数据库服务端核心配置,决定性能与行为。
- [mysqldump]:备份工具 mysqldump 的参数。
- [mysql]:命令行客户端 mysql 的参数。
- [myisamchk]:MyISAM 表检查与修复工具的参数。
[mysqld] 核心参数详解
第1步:基础连接与标识配置
入口:修改 [mysqld] 区段。
动作:确保端口与 Socket 路径一致,启用二进制日志以支持备份与复制。
参数说明:
port = 3306:标准监听端口。
socket = /var/lib/mysql/mysql.sock:本地Unix Socket路径。
server-id = 1:唯一服务器ID,主从复制中必须唯一,取值范围 1 到 2^32-1。
log-bin=mysql-bin:开启二进制日志,记录数据变更,是实现主从复制的基础。
第2步:内存与性能缓冲区优化
入口:修改 [mysqld] 区段。
- key_buffer_size:指定用于索引块的缓冲区大小,仅对 MyISAM 表有效。推荐设为物理内存的 25%-30%。
- query_cache_size:查询缓存大小,缓存 SELECT 结果。若并发写入频繁,建议调低或不启用(MySQL 8.0+已移除)。
- sort_buffer_size / read_buffer_size:排序与读缓冲区,每个连接独立分配,不宜设置过大,避免多连接时耗尽内存。
- thread_cache_size:线程缓存数量。建议设置为 CPU 核心数的 1/2 到 1 倍,减少线程创建开销。
第3步:InnoDB 引擎深度优化 大多数现代应用使用 InnoDB,需重点配置以下参数:
- innodb_buffer_pool_size:最关键的参数,缓存数据和索引。对于专用数据库服务器,建议设置为物理内存的 50%-80%。
- innodb_log_file_size:重做日志文件大小。建议为 buffer_pool_size 的 25% 左右,较大的日志可提高事务提交性能。
- innodb_flush_log_at_trx_commit:
1:每秒同步日志到磁盘,数据最安全,性能略低(默认)。2:每次事务提交写操作系统缓存,每秒刷盘,性能较好,宕机可能丢失1秒数据。0:性能最高,但宕机易丢事务数据。
- innodb_lock_wait_timeout:死锁等待超时时间(秒),防止长事务阻塞其他连接。
主从复制(Replication)配置实战
当需要构建主从架构时,需区分主库(Master)与从库(Slave)配置。
主库(Master)配置
在主库的 [mysqld] 中确保:
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = mixed
重启服务后,创建复制账号并查看状态:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
SHOW MASTER STATUS;
从库(Slave)配置
方式一:直接在 my.cnf 中配置(不推荐动态修改):
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
方式二:使用 SQL 命令动态配置(推荐):
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
完成判断:执行 SHOW SLAVE STATUS\G,观察 Slave_IO_Running 和 Slave_SQL_Running 均为 Yes,即表示复制链路建立成功。
其他组件参数简述
- [mysqldump]:建议开启
quick选项,使查询不回填内存直接输出;max_allowed_packet限制单次传输数据包大小,大表备份时需适当调大。 - [mysql]:开启
no-auto-rehash可加快连接速度;safe-updates模式限制不带 WHERE 条件的 UPDATE/DELETE,防止误操作全表数据。 - [myisamchk]:用于修复 MyISAM 表,其缓冲区大小应尽可能大以提高修复速度。
以上就是MariaDB/MySQL my.cnf配置文件中关于性能优化与主从复制设置的详细内容,更多关于数据库基础调优的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













