MySQL主从复制配置指南

MySQL主从复制是一种常见的数据冗余和高可用性解决方案,通过将主库(Master)的数据同步到从库(Slave),实现读写分离、负载均衡或数据备份。以下是详细配置步骤。


主库配置

在主库服务器上修改MySQL配置文件(通常为my.cnfmy.ini),添加以下参数:

[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_do_db = your_database_name  # 可选,指定需要复制的数据库

重启MySQL服务使配置生效:

systemctl restart mysql

创建用于复制的专用用户并授权:

CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;

获取主库当前二进制日志状态:

SHOW MASTER STATUS;

记录输出中的File(如mysql-bin.000001)和Position(如120),从库配置时需要。


从库配置

在从库服务器上修改MySQL配置文件:

[mysqld]
server-id = 2
relay_log = mysql-relay-bin
log_bin = mysql-bin
read_only = ON  # 确保从库只读

重启从库MySQL服务:

systemctl restart mysql

配置从库连接主库:

CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replica_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=120;

启动从库复制进程:

START SLAVE;

检查复制状态:

SHOW SLAVE STATUS\G

确认Slave_IO_RunningSlave_SQL_Running均为Yes,且Seconds_Behind_Master不为空值。


常见问题排查

主从连接失败
检查防火墙是否开放3306端口,确保主库的bind-address允许从库IP访问。

数据不一致
若从库出现错误,可尝试跳过错误事务:

SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE;

延迟问题
监控Seconds_Behind_Master,若延迟持续较高,需优化主库写入压力或从库硬件性能。


高级配置选项

半同步复制
在主库和从库配置中启用半同步插件,确保至少一个从库接收数据后主库才提交事务:

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;

GTID复制
使用全局事务标识符(GTID)简化故障恢复:

gtid_mode = ON
enforce_gtid_consistency = ON

通过以上步骤可完成MySQL主从复制的基本配置。根据实际需求调整参数,并定期监控复制状态以确保数据一致性。

更多推荐