第一步:网络连通性检查
目标:确保两台服务器之间网络通畅
bash
# 检查网络连通性 ping 目标服务器IP telnet 目标服务器IP 3306 # 验证防火墙设置 systemctl status firewalld iptables -L -n
关键点:
- 确认3306端口对外开放
- 检查云服务商安全组规则
- 验证内网/公网连通性
第二步:创建同步账户
目标:建立专门用于数据复制的数据库账户
sql
-- 在主服务器上创建复制用户 CREATE USER 'replica_user'@'从服务器IP' IDENTIFIED BY '强密码'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'从服务器IP'; FLUSH PRIVILEGES;
权限要求:
- REPLICATION SLAVE 权限
- 指定从服务器IP地址增强安全性
- 使用强密码策略
第三步:数据同步
目标:将主服务器数据完整迁移到从服务器
bash
# 主服务器创建数据备份 mysqldump -u用户名 -p密码 --master-data --single-transaction --all-databases > backup.sql # 传输备份文件到从服务器 scp backup.sql 用户名@从服务器IP:/tmp/ # 从服务器导入数据 mysql -u用户名 -p密码 < /tmp/backup.sql
注意事项:
- 使用
--master-data记录二进制日志位置 --single-transaction确保数据一致性- 备份期间避免大量数据写入
第四步:启动主从复制
目标:配置并启动复制进程
sql
-- 在从服务器上执行 CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='replica_user', MASTER_PASSWORD='密码', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=123456; START SLAVE;
验证命令:
sql
SHOW SLAVE STATUS\G -- 检查Slave_IO_Running和Slave_SQL_Running状态 -- 确认Seconds_Behind_Master值为0
常见问题与解决方案
| 问题类型 | 表现 | 解决方法 |
|---|---|---|
| 网络连接 | Connection timed out | 检查安全组、防火墙设置 |
| 权限问题 | Access denied | 确认复制用户权限和主机设置 |
| 数据不一致 | 同步中断或错误 | 重新初始化数据同步 |
| 版本兼容 | 语法错误 | 确保主从MySQL版本兼容 |