MariaDB/MySQL my.cnf 配置文件详解与优化指南

蓝鲸
蓝鲸
发布时间:2026-10-14| 5人浏览过
原创

本文深入解析 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] 区段。注意:以下参数需根据服务器物理内存大小按比例调整,盲目提高可能导致OOM(内存溢出)。

  • 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配置文件中关于性能优化与主从复制设置的详细内容,更多关于数据库基础调优的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。