• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 配置分布式恢复

    可以配置组复制的分布式恢复过程的多个方面以适合您的系统。

    用于分布式恢复的复制用户

    分布式恢复需要具有正确权限的复制用户,以便组复制可以建立直接的成员到成员复制通道。复制用户还必须具有正确的权限,才能充当供体上的克隆用户以进行远程克隆操作。有关设置此复制用户的说明,请参见“用户凭证”。

    手动状态转移

    从二进制日志进行状态转移是组复制进行分布式恢复的基本机制,如果复制组中的捐赠者和加入成员未设置为支持克隆,则这是唯一可用的选项。由于从二进制日志进行状态转移是基于经典的异步复制,因此,如果加入该组的服务器根本没有该组的数据,或者从非常旧的备份映像中获取了数据,则可能要花费很长时间。因此,在这种情况下,建议在将服务器添加到组之前,应通过传输组中已有服务器的相当近期的快照来使用组的数据对其进行设置。

    连接尝试次数

    对于从二进制日志进行状态转移,组复制会限制加入成员尝试从捐赠者池连接到捐赠者时进行的尝试次数。如果在没有成功连接的情况下达到了连接重试限制,则分布式恢复过程将以错误终止。请注意,此限制指定了加入成员尝试连接到供体的总数。例如,如果2个组成员是合适的供体,并且连接重试限制设置为4,则连接成员在达到限制之前会尝试2次连接到每个供体。

    默认连接重试限制为10。您可以使用group_replication_recovery_retry_count系统变量配置此设置。以下命令将尝试连接到供体的最大尝试次数设置为5:

    mysql> SET GLOBAL group_replication_recovery_retry_count= 5;
    

    对于远程克隆操作,此限制不适用。在开始尝试从二进制日志进行状态转移之前,组复制仅尝试与每个合适的供体进行一次连接。

    连接尝试的睡眠间隔

    对于从二进制日志进行状态转移,group_replication_recovery_reconnect_interval系统变量定义了分布式恢复过程在施主连接尝试之间应休眠的时间。请注意,在每次捐助者连接尝试之后,分布式恢复都不会休眠。由于加入成员正在连接到不同的服务器,而不是重复连接到同一台服务器,因此可以假定影响服务器A的问题不会影响服务器B。因此,分布式恢复仅在经过所有可能的捐助者后才挂起。一旦加入该组的服务器尝试连接到该组中的每个合适的捐助者,分布式恢复过程就会休眠数秒,该秒数由服务器配置。group_replication_recovery_reconnect_interval系统变量。例如,如果2个组成员是合适的供体,并且连接重试限制设置为4,则连接成员将尝试连接到每个供体,然后休眠连接重试间隔,然后再尝试进行连接在达到上限之前向每个捐赠者致谢。

    默认的连接重试间隔为60秒,您可以动态更改此值。以下命令将分布式恢复施主连接重试间隔设置为120秒:

    mysql> SET GLOBAL group_replication_recovery_reconnect_interval= 120;
    

    对于远程克隆操作,此间隔不适用。在开始尝试从二进制日志进行状态转移之前,组复制仅尝试与每个合适的供体进行一次连接。

    在线标记加入会员

    当分布式恢复已成功完成从供体到加入成员的状态转移时,可以将加入成员标记为组中的在线成员并准备加入。默认情况下,这是在加入成员收到并应用了所有丢失的事务之后完成的。(可选)您可以允许加入成员在收到并验证所有丢失的事务之后(但在应用之前)将其标记为在线。如果要执行此操作,请使用group_replication_recovery_complete_at系统变量指定替代设置TRANSACTIONS_CERTIFIED

    用于分布式恢复的SSL和身份验证

    您可以选择将SSL用于组成员之间的分布式恢复连接。用于分布式恢复的SSL与用于普通组通信的SSL分开配置,这由服务器的SSL设置和group_replication_ssl_mode系统变量确定。对于分布式恢复连接,可以使用专用的组复制分布式恢复SSL系统变量来配置专门用于分布式恢复的证书和密码的使用。

    默认情况下,SSL不用于分布式恢复连接。要激活它,请group_replication_recovery_use_ssl=ON按照“组复制安全套接字层(SSL)支持”中所述设置和配置组复制分布式恢复SSL系统变量。您需要将复制用户设置为使用SSL。

    将分布式恢复配置为使用SSL时,组复制会将此设置应用于远程克隆操作以及从捐助者的二进制日志进行状态转移。组复制自动配置为克隆SSL选项(设置clone_ssl_caclone_ssl_certclone_ssl_key)来匹配您的设置相应的组复制分布式恢复选项(group_replication_recovery_ssl_cagroup_replication_recovery_ssl_cert,和group_replication_recovery_ssl_key)。

    如果您未使用SSL进行分布式恢复(group_replication_recovery_use_ssl设置为OFF),并且组复制的复制用户帐户通过caching_sha2_password插件(MySQL 8.0中的默认设置)或sha256_password插件进行身份验证,则使用RSA密钥对进行密码交换。在这种情况下,如使用组复制和缓存SHA-2用户凭证插件中所述,请使用group_replication_recovery_public_key_path系统变量指定RSA公钥文件,或使用group_replication_recovery_get_public_key系统变量向主服务器请求公钥。

    压缩以进行分布式恢复

    在MySQL 8.0.18中,您可以选择使用捐赠者二进制日志中的状态转移方法为分布式恢复配置压缩。在网络带宽有限的情况下,压缩可以使分布式恢复受益,并且捐赠者必须将许多事务转移到加入成员。该group_replication_recovery_compression_algorithmgroup_replication_recovery_zstd_compression_level系统变量配置允许的压缩算法和zstd压缩级别,执行从供体的二进制日志的状态转移时使用。

    请注意,这些压缩设置不适用于远程克隆操作。当远程克隆操作用于分布式恢复时,将使用克隆插件的clone_enable_compression设置。