如何配置云服务器的MySQL主从复制?
在当今数据驱动的时代,MySQL主从复制技术已成为保障数据库高可用性的标配方案。本文将为您详细解析在云服务器环境下配置MySQL主从复制的完整流程,特别针对阿里云、腾讯云等主流云平台的特殊设置进行重点说明。
🔧 前期准备工作
- 服务器准备:建议主从服务器配置相同版本MySQL(推荐5.7+)
- 网络配置:确保主从服务器间3306端口互通(云服务器需配置安全组规则)
- 权限准备:主库需要具有REPLICATION SLAVE权限的账号
# 创建复制账号示例 CREATE USER 'repl'@'%' IDENTIFIED BY 'SecurePass123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
⚠️ 云平台特殊注意事项
- 阿里云RDS如需配置外部的从库,需先开通外网地址
- 腾讯云CVM默认禁用bind-address,需手动修改my.cnf配置
- 华为云需要额外配置安全组入方向规则
📝 主库配置详解
1. 修改my.cnf配置文件
[mysqld] server-id = 1 # 必须唯一 log_bin = mysql-bin # 开启二进制日志 binlog_format = ROW # 推荐使用ROW格式 binlog_do_db = 需要复制的数据库名 # 可选配置
2. 重启MySQL服务
systemctl restart mysqld
3. 锁定数据库并获取位置信息
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; # 记录File和Position值
🔄 从库配置流程
1. 修改从库my.cnf
[mysqld] server-id = 2 # 必须与主库不同 relay_log = /var/lib/mysql/mysql-relay-bin read_only = 1 # 建议开启只读模式
2. 设置复制通道
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='SecurePass123!', MASTER_LOG_FILE='mysql-bin.000001', # 主库show master status结果 MASTER_LOG_POS=120; # 主库show master status结果
3. 启动复制进程
START SLAVE; SHOW SLAVE STATUS\G # 检查Slave_IO_Running和Slave_SQL_Running状态
💡 专家级优化建议
| 参数 | 推荐值 | 说明 |
|---|---|---|
| sync_binlog | 1 | 确保binlog及时落盘 |
| slave_parallel_workers | 4-8 | 提升从库复制性能 |
| binlog_group_commit_sync_delay | 100 | 适当合并提交提升性能 |
🔍 常见问题排查
- Q: 从库显示Slave_IO_Running=Connecting
- ▶️ 检查:网络连通性、账号权限、防火墙设置
- Q: 出现1236错误(Got fatal error)
- ▶️ 解决方法:重新获取主库位点信息,使用CHANGE MASTER TO重置
- Q: 主从数据不一致
- ▶️ 推荐工具:pt-table-checksum + pt-table-sync
🎯 总结
通过本文详细的步骤指导,您应该已经成功在云服务器上建立了MySQL主从复制环境。记得定期检查复制状态,建议设置监控告警(如使用Prometheus+Granfa)。对于生产环境,推荐考虑更高级的GTID复制或组复制方案。
需要更详细的MySQL优化指南?点击订阅我们的数据库周刊