10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

5.6.7.6复制克隆

克隆插件支持复制。除了克隆数据之外,克隆操作还从捐赠者提取复制坐标并将它们传送到收件人,这使得使用CLONE插件来配置组复制成员和副本。使用克隆插件进行配置,比复制大量交易更快,更高效。

组复制成员也可以配置为将克隆插件作为分布式恢复的选项,在这种情况下,加入成员自动选择从现有组成员中检索组数据的最有效的方法。有关更多信息,请参阅第18.5.3.2节“克隆分布式恢复”

在克隆操作期间,二进制日志位置(文件名,偏移)和gtid_execute从捐赠者MySQL Server实例中提取并传输GTID集到收件人。此数据允许在复制流中的一致位置启动复制。在文件中保持的二进制日志和中继日志不会从捐赠者复制到收件人。要启动复制,因此在克隆数据的时间和启动复制的时间之间,不得清除收件人捕获到捐赠者所需的二进制日志。如果所需的二进制日志不可用,则报告复制握手错误。因此,应将克隆的实例添加到复制组,而不会过度延迟,以避免所需的二进制日志清除或新成员显着落后,需要更多恢复时间。

  • 在克隆的MySQL Server实例上发出此查询以检查传输到收件人的二进制日志位置:

    mysql>从performence_schema.clone_status中选择binlog_file,binlog_position;
  • 在克隆的MySQL Server实例上发出此查询以检查gtid_execute转移到收件人的GTID集:

    mysql>选择@@ global.gtid_executed;

默认情况下,在MySQL 8.0中,复制元数据存储库保存在克隆操作期间从捐赠者复制到收件人的表中。Replication Metadata存储库保存复制相关的配置设置,该设置可用于在克隆操作之后正确恢复复制。

  • 在MySQL 8.0.17和8.0.18中,只有表mysql.slave_master_info.(复制连接元数据存储库)。

  • 来自MySQL 8.0.19,表格mysql.slave_relay_log_info.(Perplier Metadata存储库)和mysql.slave_worker_info.(应用程序工作人员元数据存储库)也被复制。

有关每个表中包含的内容列表,请参阅第17.2.4.2节“复制元数据存储库”。请注意,如果设置master_info_repository = file.Relay_log_info_repository = file.在服务器上使用(不默认在MySQL 8.0中并被弃用),未克隆复制元数据存储库;他们只克隆了桌子被设置。

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

  1. 对于组复制的新组成员,首先按照说明配置组复制的MySQL Server实例第18.2.1.6节“为该组添加实例”。还设置了克隆描述的先决条件第18.5.3.2节“克隆分布式恢复”。当你发行时开始group_replication.在连接成员上,通过组复制自动管理克隆操作,因此您无需手动执行操作,您无需在加入成员上执行任何进一步的设置步骤。

  2. 对于源/副本MySQL复制拓扑中的副本,首先将来自捐赠者MySQL Server实例的数据手动向收件人克隆到收件人。捐赠者必须是复制拓扑中的源代码或副本。有关克隆指令,请参阅第5.6.7.3节“克隆远程数据”

  3. 克隆操作成功完成后,如果要在捐赠者上存在的收件人MySQL Server实例上使用相同的复制通道,请验证哪一个可以在源/副本MySQL复制拓扑中自动恢复复制,并需要手动设置。

    • 对于基于GTID的复制,如果配置了收件人gtid_mode = ON.并从捐赠者中克隆gtid_mode = ON.on_permissive., 或者off_permissive., 这gtid_execute从捐赠者套装的GTID套装在收件人上。如果收件人从已经在拓扑中的副本中克隆,则使用GTID自动定位的收件人上的复制通道可以在克隆操作启动时自动恢复复制。如果您只想使用这些相同的通道,您无需执行任何手动设置。

    • 对于基于二进制日志文件位置的复制,如果收件人在MySQL 8.0.17或8.0.18处,则来自捐赠者的二进制日志位置不应用于收件人,仅在性能架构中记录clone_status.桌子。因此,必须在克隆操作之后手动设置使用基于二进制日志文件位置的复制的收件人上的复制通道,以便在克隆操作之后恢复复制。确保这些通道未配置为在服务器启动时自动启动复制,因为它们还没有二进制日志位置并尝试从开头开始复制。

    • 对于基于二进制日志文件位置的复制,如果收件人处于MySQL 8.0.19或以上,则来自捐赠者的二进制日志位置应用于收件人。收件人上的复制频道使用基于二进制日志文件位置的复制,自动尝试使用克隆的继电器日志信息进行中继日志恢复过程,然后在重新启动复制之前。对于单线程副本(slave_parallel_workers.设置为0),继电器日志恢复应在没有任何其他问题的情况下成功,使通道能够恢复复制,没有进一步的设置。对于多线程副本(slave_parallel_workers.大于0),继电器日志恢复可能会失败,因为它通常不能自动完成。在这种情况下,发出错误消息,您必须手动设置频道。

  4. 如果您需要手动设置克隆的复制频道,或者想要在收件人上使用不同的复制通道,则以下指令提供了一个摘要和缩写示例,用于将收件人MySQL Server实例添加到复制拓扑。另请参阅适用于复制设置的详细说明。

    • 要将收件人MySQL Server实例添加到MySQL Replication拓扑,该拓扑使用基于GTID的事务作为Replication数据源,请按照指令根据需要配置实例第17.1.3.4节“使用GTID设置复制”。为实例添加复制通道,如以下缩写示例所示。这将复制源更改为声明(来自MySQL 8.0.23)或改变大师语句(在MySQL 8.0.23之前)必须定义源的主机地址和端口号,以及source_auto_position.|master_auto_position.选项应启用,如图所示:

      mysql>更改master to master_host ='source_host_name.',master_port =source_port_num.,... master_auto_position = 1,用于频道'setup_channel.'MySQL>启动Slave User ='用户名'密码='密码'频道'setup_channel.'或从MySQL 8.0.22和8.0.23:MySQL>更改源到Source_host ='source_host_name.',source_port =source_port_num.,... source_auto_position = 1,用于频道'setup_channel.'mysql> start replica user ='用户名'密码='密码'频道'setup_channel.'
    • 要将收件人MySQL Server实例添加到使用基于二进制日志文件位置的复制的MySQL复制拓扑,请按照指令配置实例第17.1.2节“设置基于二进制日志文件位置的复制”。为实例添加复制通道,如以下缩写示例所示,使用在克隆操作期间传输到收件人的二进制日志位置:

      mysql>从performence_schema.clone_status中选择binlog_file,binlog_position;mysql>更改master to master_host ='source_host_name.',master_port =source_port_num.,... master_log_file ='source_log_name.',master_log_pos =source_log_pos.,频道'setup_channel.'MySQL>启动Slave User ='用户名'密码='密码'频道'setup_channel.'或者来自MySQL 8.0.22和8.0.23:MySQL>选择Binlog_File,Binlog_position来自Performence_schema.clone_status;MySQL>将源更改为source_host ='source_host_name.',source_port =source_port_num.,... source_log_file ='source_log_name.',source_log_pos =source_log_pos.,频道'setup_channel.'mysql> start replica user ='用户名'密码='密码'频道'setup_channel.'