MySQL管理工具MySQL Utilities — 恢复有故障的主(50)

默北 MySQLMySQL管理工具MySQL Utilities — 恢复有故障的主(50)已关闭评论8,768字数 2460阅读8分12秒阅读模式

在故障成功转移后,往往需要恢复到最初的复制拓扑结构,并且使有故障的主重新再次为主。

假设故障转移后的拓扑结构是这样的,主server2:3312,从server3:3313, server4:3314, server:3315,现在需要将原来的主server1:3311再次成为主。手工执行这个过程的话,是非常繁琐的甚至还会导致复制失败,使用MySQL Utilities工具只需三个简单的步骤来搞定。文章源自运维生存时间-https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/

实例

解决上述问题需要考虑下面几个问题。首先必须停止运行mysqlfailover 实例,启动恢复旧的主 server1:3311。接着,设置旧的主为新主server2:3312的从。文章源自运维生存时间-https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/

shell> mysqlreplicate --master=root@server2:3312 --slave=root@server1:3311 -rpl-user=rpl:rpl
# master on localhost: ... connected.
# slave on localhost: ... connected.
# Checking for binary logging on master...
# Setting up replication...
# ...done.

接下来,切换到之前的主文章源自运维生存时间-https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/

shell> mysqlrpladmin --master=root@server2:3312 \
          --slaves=root@server2:3313,root@server4:3314,root@server5:3315 \
          --rpl-user=rpl:rpl --new-master=root@server1:3311 --demote-master switchover
# Checking privileges.
# Performing switchover from master at server2:3312 to slave at server1:3311.
# Checking candidate slave prerequisites.
# Checking slaves configuration to master.
# Waiting for slaves to catch up to old master.
# Stopping slaves.
# Performing STOP on all slaves.
# Demoting old master to be a slave to the new master.
# Switching slaves to new master.
# Starting all slaves.
# Performing START on all slaves.
# Checking slaves for errors.
# Switchover complete.
#
# Replication Topology Health:
+----------+-------+---------+--------+------------+---------+
| host     | port  | role    | state  | gtid_mode  | health  |
+----------+-------+---------+--------+------------+---------+
| server1  | 3311  | MASTER  | UP     | ON         | OK      |
| server2  | 3312  | SLAVE   | UP     | ON         | OK      |
| server3  | 3313  | SLAVE   | UP     | ON         | OK      |
| server4  | 3314  | SLAVE   | UP     | ON         | OK      |
| server5  | 3315  | SLAVE   | UP     | ON         | OK      |
+----------+-------+---------+--------+------------+---------+
# ...done.

恢复到初始的复制拓扑,并重新启动mysqlfailover (需要使用--force选项)。文章源自运维生存时间-https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/

shell> mysqlfailover --master=root@server1:3311 \
          --slaves=root@server2:3312,root@server3:3313,root@server4:3314,server5:3315 \
          --log=log.txt --rpl-user=rpl:rpl --force
# Checking privileges.

MySQL Replication Failover Utility
Failover Mode = auto     Next Interval = Sat Jul 27 02:17:12 2013

Master Information
------------------
Binary Log File    Position  Binlog_Do_DB  Binlog_Ignore_DB
master-bin.000002  151

GTID Executed Set
None

Replication Health Status
+----------+-------+---------+--------+------------+---------+
| host     | port  | role    | state  | gtid_mode  | health  |
+----------+-------+---------+--------+------------+---------+
| server1  | 3311  | MASTER  | UP     | ON         | OK      |
| server2  | 3312  | SLAVE   | UP     | ON         | OK      |
| server3  | 3313  | SLAVE   | UP     | ON         | OK      |
| server4  | 3314  | SLAVE   | UP     | ON         | OK      |
| server5  | 3315  | SLAVE   | UP     | ON         | OK      |
+----------+-------+---------+--------+------------+---------+

Q-quit R-refresh H-health G-GTID Lists U-UUIDs L-log entries

权限

用户需要有配置复制的权限。文章源自运维生存时间-https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/

小技巧

一定要等待失败的主赶上新的主,以免丢失数据,可以使用mysqlrpladmin 工具的health命令查看。文章源自运维生存时间-https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/ 文章源自运维生存时间-https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 27/04/2015 01:00:54
  • 转载请务必保留本文链接:https://www.ttlsa.com/mysql/restore-previous-master-aflter-failover/