在从库上执行 STOP SLAVE 之后,可以通过 SHOW SLAVE STATUS\G; 获取从库当前的二进制日志位置和中继日志位置。这些信息可以用于之后的恢复和同步操作。具体步骤如下:
步骤 1: 停止从库复制
在从库上执行以下命令,停止复制进程:
STOP SLAVE;
步骤 2: 获取从库状态
在从库上执行以下命令,获取从库当前的二进制日志位置和中继日志位置:
SHOW SLAVE STATUS\G;
记录输出中的 Relay_Master_Log_File
和 Exec_Master_Log_Pos
。这两个值分别是从库读取的主库二进制日志文件和位置,以及从库执行到的主库二进制日志位置。
步骤 3: 备份从库
在从库上创建数据快照。可以使用 mysqldump 或者其他备份工具。以下是使用 mysqldump 的示例:
mysqldump --all-databases --single-transaction --quick --lock-tables=false > slave_backup.sql
步骤 4: 恢复从库备份
将备份文件(例如 slave_backup.sql
)导入从库:
mysql -u root -p < /path/to/backup/slave_backup.sql
步骤 5: 配置从库复制
根据在步骤 2 中记录的二进制日志文件和位置,在从库上配置复制:
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234;
确保替换 MASTER_HOST、MASTER_USER、MASTER_PASSWORD、MASTER_LOG_FILE 和 MASTER_LOG_POS 为相应的值。
步骤 6: 启动从库复制
在从库上执行以下命令,启动复制进程:
START SLAVE;
步骤 7: 验证从库状态
在从库上执行以下命令,检查复制状态:
SHOW SLAVE STATUS\G;
确认 Slave_IO_Running
和 Slave_SQL_Running
都是 Yes,并且没有错误。
示例总结
完整的恢复和同步流程如下:
1. 从库:
STOP SLAVE;
2. 从库:
SHOW SLAVE STATUS\G;
3. 从库:
mysqldump --all-databases --single-transaction --quick --lock-tables=false > slave_backup.sql
4. 从库:
mysql -u root -p < /path/to/backup/slave_backup.sql
5. 从库:
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234;
START SLAVE;
6. 从库:
SHOW SLAVE STATUS\G;
通过这些步骤,可以确保在停止从库复制和获取从库状态之后正确配置和恢复从库的复制,并保持从库与主库的数据一致性。