Documentation Home

17.9.5.1 分布式恢复基础

每当成员加入复制组时,它都会连接到现有成员以执行状态转移。加入群组的服务器传输加入之前群组中发生的所有交易,这些交易由现有成员(称为donor)提供。接下来,加入该组的服务器应用在该状态传输过程中发生在该组中的事务。当加入群组的服务器赶上群组中剩余的服务器时,开始正常参与群组。这个过程称为分布式恢复。

阶段1

在第一阶段,加入该组的服务器选择该组中的一个在线服务器作为 其缺失状态的捐赠者。捐助者负责向加入该组的服务器提供在加入该组之前它丢失的所有数据。这是通过依赖于在捐赠者和加入该组的服务器之间建立的标准异步复制通道来实现的,请参阅 第 16.2.2 节,“复制通道”. 通过这个复制通道,捐赠者的二进制日志被复制,直到加入该组的服务器成为该组的一部分时视图发生变化。加入该组的服务器在收到捐赠者的二进制日志时应用它们。

在复制二进制日志的同时,加入组的服务器也会缓存组内交换的每个事务。换句话说,它正在监听在它加入该组之后发生的交易,同时它正在应用捐赠者的缺失状态。当第一阶段结束并且到捐赠者的复制通道关闭时,加入该组的服务器然后开始第二阶段:赶上。

阶段2

在此阶段,加入组的服务器继续执行缓存的事务。当排队等待执行的事务数最终达到零时,该成员就被声明为在线。

弹力

当加入该组的服务器正在从中获取二进制日志时,恢复过程可以承受捐助者的失败。在这种情况下,每当捐赠者在第一阶段失败时,加入该组的服务器将故障转移到新的捐赠者并从该捐赠者恢复。当发生这种情况时,加入该组的服务器将关闭与明确加入该组的失败服务器的连接,并打开与新捐赠者的连接。这是自动发生的。