MySQL Replication
MySQL 主从复制是一种常见的高可用和读写分离解决方案,下面将详细介绍搭建步骤:
1 准备工作
1.1 环境要求
两台或以上 MySQL 服务器(主库和从库)
相同或兼容的 MySQL 版本(建议主从版本一致)
确保网络连通性
足够的磁盘空间
1.2 服务器规划
角色
主机名/IP
端口
说明
主库
master.example.com
3306
写入操作的主要服务器
从库
slave1.example.com
3306
读取操作或备份的服务器
2 主库配置
2.1 修改主库配置文件 (my.cnf/my.ini)
[mysqld]
server-id = 1 # 唯一ID,主库通常为1
log_bin = mysql-bin # 启用二进制日志
binlog_format = ROW # 推荐使用ROW格式
binlog_do_db = your_database # 可选:指定要复制的数据库
expire_logs_days = 10 # 二进制日志保留天数
sync_binlog = 1 # 每次事务提交都写入磁盘2.2 重启 MySQL 服务
2.3 创建复制用户
2.4 获取主库状态
记录输出结果(File 和 Position 值),例如:
2.5 解锁表(可选,如果需要继续写入)
3 从库配置
3.1 修改从库配置文件 (my.cnf/my.ini)
3.2 重启 MySQL 服务
3.3 配置复制
3.4 启动复制
3.5 检查复制状态
关键检查项:
Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0(或较小值)
4 验证复制
4.1 在主库创建测试数据
4.2 在从库检查数据
5 常见问题处理
5.1 复制错误处理
查看错误日志:
SHOW SLAVE STATUS\G中的Last_Error常见错误及解决:
主键冲突:跳过错误事务(不推荐长期使用)
网络中断:检查网络后自动恢复
数据不一致:可能需要重新同步
5.2 跳过错误事务(谨慎使用)
5.3 重新同步数据
如果复制差异过大,可能需要:
停止从库复制
备份主库数据并恢复到从库
重新配置复制(使用新的主库状态)
5.4 主库状态检查
5.4.1 show master status;
5.4.2 show slave status;
常态下主库查询 slave status 应该返回空
5.4.3 select @@read_only;
返回值为
0(或OFF)表示非只读模式返回值为
1(或ON)表示只读模式
6 高级配置(可选)
6.1 GTID 复制(MySQL 5.6+)
6.2 半同步复制(提高数据安全性)
6.3 多源复制(一个从库复制多个主库)
7 维护建议
定期监控复制延迟
定期检查主从数据一致性
考虑使用工具如 pt-table-checksum 和 pt-table-sync 进行数据校验和修复
制定故障切换预案
通过以上步骤,您可以成功搭建 MySQL 主从复制环境。根据实际需求,您还可以进一步配置过滤规则、优化复制性能或实现更复杂的高可用架构。
Last updated