Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


7.6.7.7 复制克隆

克隆插件支持复制。在克隆操作中,除了克隆数据外,还将捐赠服务器的复制坐标传递给接收服务器,使得克隆插件可以用于组播复制成员和副本的配置。使用克隆插件配置组播复制是比复制大量事务快捷高效的。

组播复制成员也可以配置使用克隆插件作为分布式恢复选项,在这种情况下,加入成员自动选择从现有组成员中最有效地获取组数据。更多信息,请参见第20.5.4.2节,“分布式恢复克隆”

在克隆操作中,双方服务器实例都将二进制日志位置(文件名,偏移量)和gtid_executed GTID 集合传递给接收服务器。这部分数据允许在复制流程中始终保持一致。捐赠服务器中的二进制日志和中继日志文件不被复制到接收服务器。如果需要的二进制日志在克隆数据后被删除,或者新成员落后太多,需要更多恢复时间,克隆实例应该尽快加入复制组以避免这些问题。

  • 在克隆的 MySQL 服务器实例上执行该查询,以检查传输到接收者的二进制日志位置:

    mysql> SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
  • 在克隆的 MySQL 服务器实例上执行该查询,以检查gtid_executed GTID 集合,传输到接收者的:

    mysql> SELECT @@GLOBAL.GTID_EXECUTED;

默认情况下,复制元数据存储库在克隆操作中从捐赠服务器复制到接收服务器。复制元数据存储库保存了可以用来正确恢复复制的配置设置。表 mysql.slave_master_infomysql.slave_relay_log_infomysql.slave_worker_info 都被复制。

每个表包含的内容,请见第19.2.4.2节,“复制元数据存储库”

要克隆用于复制,执行以下步骤:

  1. 为新加入的组成员在 Group Replication 中首先配置 MySQL 服务器实例,遵循第20.2.1.6节,“添加实例到组”中的说明。同时,设置克隆的先决条件,如第20.5.4.2节,“分布式恢复克隆”中所述。加入成员执行START GROUP_REPLICATION时,Group Replication 自动管理克隆操作,您不需要手动进行该操作,也不需要在加入成员上执行其他设置步骤。

  2. 在源/副本 MySQL 复制拓扑结构中,为副本实例首先从捐赠 MySQL 服务器实例手动克隆数据。捐赠服务器必须是拓扑结构中的源或副本。关于克隆的说明,请见第7.6.7.3节,“远程数据克隆”

  3. 克隆操作完成后,如果您想在接收 MySQL 服务器实例上使用与捐赠服务器相同的复制通道,验证哪些可以自动恢复拓扑结构中的源/副本 MySQL 复制拓扑结构中哪些需要手动设置。

    • 对于基于GTID的复制,如果接收方配置了gtid_mode=ON,并且从一个捐赠服务器克隆过来,该捐赠服务器的gtid_executed GTID 集合将被应用于接收方。如果接收方从拓扑结构中已经克隆过来的副本,接收方上的复制通道可以自动恢复复制操作,当通道启动时。您不需要进行任何手动设置,只要使用这些相同的通道。

    • 对于基于二进制日志文件位置的复制,捐赠服务器上的二进制日志文件位置将被应用于接收方。接收方上的复制通道自动尝试执行relay log恢复过程,使用克隆后的relay log信息,重新启动复制。对于单线程副本(replica_parallel_workers 设置为0),relay log恢复通常在无其他问题的情况下成功,允许通道重新启动复制不需要进一步设置。对于多线程副本(replica_parallel_workers 大于0),relay log恢复通常失败,因为它不能自动完成。在这种情况下,会出现错误信息,您需要手动设置通道。

  4. 如果您需要手动设置克隆复制通道或在接收端使用不同的复制通道,以下指南提供了添加接收 MySQL 服务器实例到复制拓扑结构的总结和简要示例。还请查看适用于您的复制设置的详细指南。

    • 要将接收 MySQL 服务器实例添加到使用 GTID 事务作为复制数据源的 MySQL 复制拓扑结构中,按照第19.1.3.4节,“使用 GTIDs 设置复制”中的指南配置实例。为实例添加复制通道,如下所示的简要示例中,CHANGE REPLICATION SOURCE TO 语句必须定义源主机地址和端口号,并且SOURCE_AUTO_POSITION 选项应启用,如下所示:

      CHANGE SOURCE TO SOURCE_HOST = 'source_host_name', SOURCE_PORT = source_port_num,
             ...
             SOURCE_AUTO_POSITION = 1,
             FOR CHANNEL 'setup_channel';
      START REPLICA USER = 'user_name' PASSWORD = 'password' FOR CHANNEL 'setup_channel';
    • 要将接收 MySQL 服务器实例添加到使用二进制日志文件位置基于复制的 MySQL 复制拓扑结构中,按照第19.1.2节,“使用二进制日志文件位置基于复制”中的指南配置实例。为实例添加复制通道,如下所示的简要示例中,使用克隆操作期间传输到接收端的二进制日志文件位置:

      SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
      CHANGE SOURCE TO SOURCE_HOST = 'source_host_name', SOURCE_PORT = source_port_num,
             ...
             SOURCE_LOG_FILE = 'source_log_name',
             SOURCE_LOG_POS = source_log_pos,
             FOR CHANNEL 'setup_channel';
      START REPLICA USER = 'user_name' PASSWORD = 'password' FOR CHANNEL 'setup_channel';