切换仅通过heartbeat对写节点(writeHost)进行. 切换发生必须满足如下条件:
- 当前写节点heartbeat异常.
- 有多个写节点.
- switchtype不为-1(参见1.2 schemal.xml)
切换过程如下:
- 从当前写节点的下一个写节点开始依次进行检测:1.实例是否正常? 2.实例同步状态是否在可接受范围内(切换类型为2时)? 直到发现一个可用写节点或检测完所有写节点。
- 如果有可用节点, 关闭当前写实例上的所有连接, 初始化选定的可用写节点上的连接, 设置选型的可以写节点为当前写节点。