在故障成功转移后,往往需要恢复到最初的复制拓扑结构,并且使有故障的主重新再次为主。
假设故障转移后的拓扑结构是这样的,主server2:3312,从server3:3313, server4:3314, server:3315,现在需要将原来的主server1:3311再次成为主。手工执行这个过程的话,是非常繁琐的甚至还会导致复制失败,使用MySQL Utilities工具只需三个简单的步骤来搞定。
实例
解决上述问题需要考虑下面几个问题。首先必须停止运行mysqlfailover 实例,启动恢复旧的主 server1:3311。接着,设置旧的主为新主server2:3312的从。
1
2
3
4
5
6
|
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.
|
接下来,切换到之前的主
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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选项)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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
|
权限
用户需要有配置复制的权限。