如何配置 MySQL 主从复制?

2025.5.29 杂七杂八 955

如何配置 MySQL 主从复制? 杂七杂八-第1张

MySQL主从复制是实现数据高可用和负载均衡的关键技术。本文将详细介绍主从复制的配置步骤,包括主库和从库的设置、权限配置及常见问题排查,帮助开发者快速搭建稳定可靠的MySQL复制环境。

一、MySQL主从复制原理

MySQL主从复制基于二进制日志(Binary Log)实现,主库(Master)将所有数据变更写入二进制日志,从库(Slave)通过I/O线程读取主库日志并重放,实现数据同步。这种架构能有效提升系统可用性和读取性能。

二、配置前的准备工作

  1. 确保主从服务器网络互通
  2. 主从MySQL版本兼容(建议主从版本一致)
  3. 主库需要开启二进制日志
  4. 准备具有复制权限的专用账号

三、详细配置步骤

1. 主库(Master)配置

修改主库my.cnf配置文件(通常位于/etc/my.cnf或/etc/mysql/my.cnf):

[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_do_db = 需要复制的数据库名  可选,指定特定库
expire_logs_days = 7
sync_binlog = 1

重启MySQL服务使配置生效:

systemctl restart mysqld

2. 创建复制专用账户

在主库上执行以下SQL命令:

CREATE USER 'repl'@'从库IP' IDENTIFIED BY 'StrongPassword123!';
GRANT REPLICATION SLAVE ON . TO 'repl'@'从库IP';
FLUSH PRIVILEGES;

3. 获取主库二进制日志位置

执行以下命令记录关键信息:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

记下File(如mysql-bin.000001)和Position(如120)的值,解锁表:

UNLOCK TABLES;

4. 从库(Slave)配置

修改从库my.cnf配置文件:

[mysqld]
server-id = 2   必须与主库不同
relay_log = mysql-relay-bin
read_only = 1   从库设为只读
log_slave_updates = 1   如需级联复制

重启从库MySQL服务:

systemctl restart mysqld

5. 配置从库连接主库

在从库上执行:

CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='StrongPassword123!',
MASTER_LOG_FILE='mysql-bin.000001',   之前记录的File
MASTER_LOG_POS=120;   之前记录的Position

6. 启动复制进程

START SLAVE;

检查复制状态:

SHOW SLAVE STATUSG

确保Slave_IO_Running和Slave_SQL_Running都为Yes。

四、常见问题排查

  • 连接失败: 检查网络、防火墙和账号权限
  • 复制中断: 查看Last_Error字段定位问题
  • 数据不一致: 使用pt-table-checksum工具校验
  • 延迟问题: 监控Seconds_Behind_Master值

五、高级配置建议

  1. 启用GTID(全局事务标识符)简化故障转移
  2. 配置半同步复制提高数据安全性
  3. 设置复制过滤规则减少不必要的数据传输
  4. 定期监控复制延迟和状态

通过以上步骤,您已成功搭建MySQL主从复制环境。这种架构不仅能提高系统可用性,还能通过读写分离显著提升查询性能。

评论