# 从主从复制到链式复制 在`添加从库`一节里,Joe实现了一个一对多的主从结构。standby 和 backup 都是trade 的从库。 现在,Joe 需要将 backup 修改为 standby 的从节点,实现链式复制。 他应该如何操作?
点击进入[MySQL实战练习环境](https://mydev.csdn.net/product/pod/new?image=cimg-centos7-skilltreemysql&connect=auto&create=auto&utm_source=skill)。 * `show databases` 列出所有数据库 * `show tables` 列出所有表 ## 答案 1. 在 standby 和 backup 上分别执行 `STOP SLAVE`,停止复制 2. 在 standby 和 backup 上分别执行 `SHOW SLAVE STATUS;`,查看 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` 是否一致 3. 如果状态一致,进入第 5 步。 4. 如果不一致,在 pos 靠前的服务上执行 `START SLAVE UNTIL MASTER_LOG_FILE='$file', Master_Log_Pos=$pos;`, 将变更同步到与另一台服务器一致。这里的 `$file` 和 `$pos` 即状态较新的那台服务器的状态值。 5. 在 standby 上创建用于 backup 连接的复制账号,授予复制权限 `GRANT REPLICATION SLAVE ON *.* TO 'user'@'backup';` 6. 在 standby 执行 `SHOW MASTER STATUS;` 获得其 binlog 文件和 position 值。 7. 在 standby 执行 `START SLAVE`,启动复制过程。 8. 在 backup 服务器执行 `STOP SLAVE;` ,停止复制 9. 在 backup 设定 standby 服务器的地址、端口、登录信息和binlog启动位置,作为主库信息。 10. 在 backup 执行 `START slave;` 启动复制线程。 ## 选项 ### A 1. 在 standby 和 backup 上分别执行 `STOP SLAVE`,停止复制 2. 在 standby 和 backup 上分别执行 `SHOW SLAVE STATUS;`,查看 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` 是否一致 3. 如果状态一致,进入第 5 步。 4. 如果不一致,在 pos 靠前的服务上执行 `START SLAVE UNTIL MASTER_LOG_FILE='$file', Master_Log_Pos=$pos;`, 将变更同步到与另一台服务器一致。这里的 `$file` 和 `$pos` 即状态较新的那台服务器的状态值。 5. 在 standby 上创建用于 backup 连接的复制账号 6. 备份 standby 。 7. 在 standby 执行 `START SLAVE`,启动复制过程。 8. 在 backup 服务器执行 `STOP SLAVE;` ,停止复制 9. 用standby 的备份文件恢复 backup。 10. 在 backup 执行 `START slave;` 启动复制线程。 ### B 1. 在 standby 和 backup 上分别执行 `STOP SLAVE`,停止复制 2. 在 standby 和 backup 上分别执行 `SHOW SLAVE STATUS;`,查看 `Relay_Master_Log_File` 和 `Exec_Master_Log_Pos` 是否一致 3. 在 standby 上创建用于 backup 连接的复制账号 4. 在 standby 执行 `SHOW MASTER STATUS;` 获得其 binlog 文件和 position 值。 5. 在 standby 执行 `START SLAVE`,启动复制过程。 6. 在 backup 服务器执行 `STOP SLAVE;` ,停止复制 7. 在 backup 设定 standby 服务器的地址、端口、登录信息和binlog启动位置,作为主库信息。 8. 在 backup 执行 `START slave;` 启动复制线程。 ### C 所有选项都不对。