MySQL主从复制是实现数据高可用和负载均衡的关键技术。本文将详细介绍主从复制的配置步骤,包括主库和从库的设置、权限配置及常见问题排查,帮助开发者快速搭建稳定可靠的MySQL复制环境。
一、MySQL主从复制原理
MySQL主从复制基于二进制日志(Binary Log)实现,主库(Master)将所有数据变更写入二进制日志,从库(Slave)通过I/O线程读取主库日志并重放,实现数据同步。这种架构能有效提升系统可用性和读取性能。
二、配置前的准备工作
- 确保主从服务器网络互通
- 主从MySQL版本兼容(建议主从版本一致)
- 主库需要开启二进制日志
- 准备具有复制权限的专用账号
三、详细配置步骤
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值
五、高级配置建议
- 启用GTID(全局事务标识符)简化故障转移
- 配置半同步复制提高数据安全性
- 设置复制过滤规则减少不必要的数据传输
- 定期监控复制延迟和状态
通过以上步骤,您已成功搭建MySQL主从复制环境。这种架构不仅能提高系统可用性,还能通过读写分离显著提升查询性能。
评论