• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 分布式恢复的工作方式

    当组复制的分布式恢复过程正在从二进制日志执行状态转移时,要在特定时间点之前将加入成员与供体同步,加入成员和供体将使用GTID(请参见“复制”)。使用全球处理标识符”)。但是,GTID仅提供一种手段来了解加入成员所缺少的处理。它们无助于标记加入组的服务器必须赶上的特定时间点,也无法传达认证信息。这是二进制日志视图标记的工作,它标记二进制日志流中的视图更改,并且还包含其他元数据信息,从而为加入成员提供缺少与证书相关的数据。

    本主题说明视图更改的作用和视图更改标识符,以及从二进制日志执行状态转移的步骤。

    参见和参见更改

    视图对应于一组在特定时间点在当前配置中积极参与,换句话说构件。它们在组中正常且在线运行。

    视图改变时所述组结构的修改情况,例如构件接合或离开发生。任何组成员身份更改都会导致在相同的逻辑时间点将独立的视图更改传达给所有成员。

    视图标识符唯一地标识的图。每当视图更改发生时,都会生成它。

    在组通信层,视图更改及其关联的视图标识符标记了成员加入之前和之后交换的数据之间的边界。这个概念是通过二进制日志事件实现的:“视图更改日志事件”。记录视图标识符以区分组成员身份发生更改之前和之后传输的事务。

    视图标识符本身由两部分组成:一个随机生成的部分和一个单调递增的整数。随机生成的部分是在创建组时生成的,并且在组中至少有一个成员时保持不变。每次视图更改发生时,整数都会递增。使用这两个不同的部分,视图标识符可以识别由于成员加入或离开而引起的增量组更改,并且还可以识别所有成员在完全关闭组中退出组的情况,因此没有信息可保留该组所在的视图。

    开始:稳定小组

    所有服务器均处于联机状态,并且正在处理来自该组的传入事务。在复制事务方面,某些服务器可能会有些落后,但最终它们会融合在一起。该组充当一个分布式和复制数据库。

    稳定组


    参见更改:成员加入

    每当新成员加入该组并因此执行视图更改时,每个联机服务器都会将视图更改日志事件排队等待执行。之所以要排队,是因为在更改视图之前,可以在要应用的服务器上将几个事务排队,因此,这些事务属于旧视图。在它们之后对视图更改事件进行排队可确保正确标记何时发生。

    同时,加入成员从成员服务通过视图抽象说明的在线服务器列表中选择合适的捐助者。成员加入视,在线成员将视图更改事件写入二进制日志。

    成员加入


    状态转移:追赶

    如果使用克隆插件设置了组成员和加入成员(请参见“克隆分布式恢复”),并且加入成员和组之间的事务差异超过了为远程克隆操作设置的阈值(group_replication_clone_threshold),组复制通过远程克隆操作开始分布式恢复。如果任何组成员的二进制日志文件中不再存在必需的事务,则还将执行远程克隆操作。在远程克隆操作期间,将删除加入成员上的现有数据,并用捐赠者数据的副本替换。当远程克隆操作完成并且加入成员已重新启动时,将从施主的二进制日志中进行状态转移,以获取在进行远程克隆操作时组所应用的事务。如果处理缺口不大,或者未安装克隆插件,

    为了从捐赠者的二进制日志进行状态转移,在加入成员和捐赠者之间建立连接,并开始状态转移。与供体的这种交互继续进行,直到加入该组的应用程序线程的服务器处理视图更改日志事件,该事件对应于加入该组的服务器进入该组时触发的视图更改。换句话说,加入该组的服务器从供体复制,直到它到达具有与其已经在其中的视图标记匹配的视图标识符的标记。

    状态转移:追赶

    由于视图标识符是在同一逻辑时间传输到该组中的所有成员的,因此加入该组的服务器知道应该停止复制哪个视图标识符。这避免了复杂的GTID集计算,因为视图标识符清楚地标记了哪些数据属于每个组视图。

    当加入组的服务器从供体复制时,它也在缓存来自组的传入事务。最终,它将停止从供体复制,并切换到应用已缓存的供体。

    排队的事务


    完成:赶上

    当加入该组的服务器识别到带有预期视图标识符的视图更改日志事件时,到施主的连接将终止,并开始应用缓存的事务。尽管它在二进制日志中充当标记,但界定了视图更改的范围,但视图更改日志事件也扮演着另一个角色。当加入该组的服务器进入该组时,它传达所有服务器认为的认证信息,换句话说,最后一个视图更改。没有它,加入该组的服务器将没有必要的信息以能够认证(检测冲突)后续事务。

    追赶的持续时间不是确定的,因为它取决于工作负载和向该组传入的事务的速率。此过程完全在线,加入该组的服务器在追赶时不会阻止该组中的任何其他服务器。因此,由于这个原因,加入组的服务器在移至该阶段时所处的事务数量可能会有所变化,从而根据工作负载而增加或减少。

    当加入该组的服务器达到零排队事务且其存储的数据等于其他成员时,其公共状态将更改为联机。

    联机实例