通常因为升级,服务器为何等原因,需要按照计划将主库迁移到其他实例的情况。
计划内切换的拓扑结构改变的流程如下:
该操作可能需要几秒钟,在此期间您的应用程序预计会告警或者报错,因为主服务器是只读的。
Orchestrator 提供了专门的钩子脚本来进行计划内的切换,分别用于迁移前和迁移后的一下定制需求。
PreGracefulTakeoverProcesses
PostGracefulTakeoverProcesses
orchestrator
将运行计划内切换的的前置流程脚本?PreGracefulTakeoverProcesses
你会发现graceful-takeover与真正的故障转移(failover)有些相似,有些操作是不同的。例如:使用PreGracefulTakeoverProcesses消除告警,使用PostGracefulTakeoverProcesses?,更高级的用还有停止代理层的流量等。
在正常的故障转移前、后过程中,您可以使用{command}
占位符或ORC_COMMAND
环境变量来检查这是否是正常接管。你会看到价值graceful-master-takeover
。
graceful-master-takeover
:
orchestrator
不会在老主上启动复制。graceful-master-takeover-auto
:
orchestrator自己选择最佳新主库
orchestrator
在老主开始复制。#指定新主库host和端口,老主库不start slave
orchestrator-client -c graceful-master-takeover -alias?mycluster -d designated.master.to.promote:3306
#指定新主库host和端口,老主库start slave??????????
orchestrator-client -c graceful-master-takeover-auto -alias?mycluster -d designated.master.to.promote:3306
#让orchestrator选新主库,老主库start slave?
orchestrator-client -c graceful-master-takeover-auto -alias?mycluster
#计划迁移,指定新主库host和端口
/api/graceful-master-takeover/:clusterHint/:designatedHost/:designatedPort
#计划迁移,不指定新主库host和端口,要求拓扑内只有一个从库
/api/graceful-master-takeover/:clusterHint
#计划迁移,不指定新主库host和端口,老主库自动start slave
/api/graceful-master-takeover-auto/:clusterHint
?将老主的一个直接副本拖拽到老主的左边,将使用graceful-master-takeover方法,老主不会启动自动启动复制