重建MySQL从库需先确保主库正常,通过SHOW MASTER STATUS获取binlog位置,用mysqldump配合–master-data=2和–single-transaction参数备份主库数据,再将备份文件导入从库并重启复制。
重建 MySQL 从库通常发生在主从同步异常、数据不一致或从库损坏的情况下。整个过程需要确保主库状态正常,并重新建立复制关系。以下是具体操作步骤:
1. 确认主库的复制状态
登录主库,查看当前的二进制日志位置:
SHOW MASTER STATUS;
记录输出中的 File 和 Position,后续从库会用到。
2. 备份主库数据
使用 mysqldump 创建一致性备份(推荐加锁保证数据一致性):
mysqldump -u root -p –all-databases –master-data=2 –single-transaction > backup.sql
–master-data=2 会将 CHANGE MASTER 语句写入备份文件,包含正确的 binlog 位置;–single-transaction 确保 InnoDB 数据一致性。
3. 将备份恢复到从库
如果从库数据库已损坏或需重置:
- 停止从库复制:STOP SLAVE;
- 删除现有数据(谨慎操作)或重建实例
- 导入备份文件:
mysql -u root -p
4. 配置从库连接主库
根据备份中记录的 binlog 位置或 SHOW MASTER STATUS 的结果,执行:
CHANGE MASTER TO MASTER_HOST=’主库IP’, MASTER_USER=’repl’, MASTER_PASSWORD=’密码’, MASTER_LOG_FILE=’mysql-bin.000001′, MASTER_LOG_POS=123456;
注意:MASTER_LOG_FILE 和 MASTER_LOG_POS 必须与主库当前一致。
5. 启动从库复制
执行命令开启复制:
START SLAVE;
查看复制状态:
SHOW SLAVE STATUSG
确认以下两项为 Yes:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
若出现错误,检查 Last_Error 字段并处理问题(如主键冲突、表不存在等)。
6. 验证数据一致性
在主从库上分别查询关键表的数据行数或校验和:
CHECKSUM TABLE db_name.table_name;
或使用 pt-table-checksum 工具进行全量比对。
基本上就这些。只要主库状态正常,备份准确,配置正确,从库就能顺利重建并追平主库数据。操作时注意网络连通性、用户权限和防火墙设置。