分布式事务数据库HotDB的存储节点故障切换后数据正确性保障

2022-03-15 00:00:00 事务 复制 主从 切换 原主

无论是异步复制还是半同步复制,都可能会存在这样一种情况:

**在故障切换全部完成后,**原主库恢复,新主库(原从库)复制IO线程可能自动重连并获取到切换前没有获取到的事务,而这样的事务在切换的处理过程中,已经是被认定没有提交成功的事务,不能再继续复制,否则会有数据混乱的风险。
因此增加计算节点参数failoverAutoresetslave,默认关闭。
<propertyname=“failoverAutoresetslave”>false

**故障切换后,**会暂停原主从之间IO线程,并对原主库每分钟进行一次心跳检测直到原主库恢复正常。原主库恢复正常后,对比原主库的binlog位置,检测原从库(现主库)是否存在切换前没有获取到的事务,若存在,开启此参数则自动重置主从复制关系。若不存在未接收的事务,则重新开启IO线程并不再做任何处理。
注意:
Ø 检测是否有未接收的事务的前提是主从库都需要开启GTID,否则此参数开启时,故障切换完成会自动重置主从复制关系。
Ø 若原主库在心跳检测时重试超过10080次,仍然为不可用状态,此时,参数为开启状态,也会自动重置主从复制关系。
Ø 若发生自动重置复制关系后,计算节点记录warning级别的报警日志如下:
you should decide whether to manuallyexecute the unexecuted part of binlog or rebuild the replication according tothe actual situation.

且管理平台中的主备状态会显示异常,鼠标悬浮显示如图提示信息:


Ø 若故障切换完成后,主从库未开启GTID或存在未接收的事务,但此参数为关闭状态,计算节点也会记录warning级别的报警日志如下:
DBA is required to deal with the new master,which is the original slave before switching and decide whether to stopreplication or continue replication regardless. In addition, there is risk ofdata error caused by automatic reconnection of replication after manual orunexpected restart of the new master.

相关文章