手把手教你搭建MySQL主从复制架构:从零开始的高可用方案
在现代互联网应用中,数据库的高可用性至关重要。MySQL主从复制(Master-Slave Replication)作为最经典的数据库容灾方案之一,不仅能够实现读写分离,还能有效提升系统可用性。本文将用实战演示的方式,带你一步步完成MySQL主从架构的搭建。
一、准备工作
环境要求:
- 至少两台服务器(主库1台,从库1台)
- 相同版本的MySQL(推荐5.7+)
- 服务器间网络互通
网络配置建议:
主库IP:192.168.1.100
从库IP:192.168.1.101
二、主库配置步骤
1. 编辑主库my.cnf配置文件:
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog-do-db = 需要复制的数据库名
sync_binlog = 1
2. 创建复制专用账号:
CREATE USER 'repl'@'192.168.1.101' IDENTIFIED BY 'Repl@1234';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101';
3. 查看主库状态(记录File和Position值):
SHOW MASTER STATUS;
三、从库配置步骤
1. 编辑从库my.cnf配置文件:
[mysqld]
server-id = 2
relay_log = mysql-relay-bin
read_only = 1
2. 配置主从连接:
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='Repl@1234',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
3. 启动复制线程:
START SLAVE;
四、验证复制状态
1. 检查从库状态:
SHOW SLAVE STATUS\G
重点关注以下指标:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Seconds_Behind_Master: 0
2. 主库创建测试数据,观察从库同步情况
五、常见问题排查
问题1:Slave_IO_Running显示Connecting
解决方案:检查网络连接、复制账号权限、密码是否正确
问题2:出现复制错误
解决方案:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
问题3:主从数据不一致
解决方案:使用pt-table-checksum工具检测,pt-table-sync工具修复
六、进阶配置建议
1. 半同步复制:确保至少一个从库接收到数据
2. GTID复制:简化故障转移和位置追踪
3. 延迟复制:防止误操作导致数据丢失
4. 多线程复制:提升从库应用日志速度
通过本文的详细步骤,你已经成功搭建了MySQL主从复制环境。这种架构不仅能提高系统的可用性,还能实现读写分离,显著提升数据库性能。建议定期监控复制状态,并考虑实现自动化故障转移机制,如结合MHA或Orchestrator工具。
记住:生产环境部署前,务必进行充分测试!
