10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.5 mb
PDF (A4)- 41.6 mb
手册页(TGZ)- 262.1 kb
手册页(邮政编码)- 372.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

5.6.7.6克隆用于复制

克隆插件支持复制。除了克隆数据之外,克隆操作还从捐赠方提取复制坐标并将其传输给接收方,这使得可以使用克隆插件来配置Group replication成员和副本。使用克隆插件进行配置要比复制大量事务更快、更有效。

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

在克隆操作期间,二进制日志位置(文件名、偏移量)和gtid_executed提取GTID集,并将其从捐赠MySQL服务器实例传输到接收方。此数据允许在复制流中的一致位置启动复制。二进制日志和中继日志(保存在文件中)不会从发送方复制到接收方。要启动复制,在数据克隆到复制启动这段时间内,接收方追赶发送方所需的二进制日志必须不被清除。如果没有所需的二进制日志,则会报告复制握手错误。因此,应该将克隆的实例添加到复制组中,而不需要过多的延迟,以避免所需的二进制日志被清除或新成员明显滞后,从而需要更多的恢复时间。

  • 在一个克隆的MySQL服务器实例上发出这个查询来检查传输给接收者的二进制日志位置:

    mysql>从performance_schema.clone_status中选择BINLOG_FILE, BINLOG_POSITION
  • 在一个克隆的MySQL服务器实例上发出这个查询来检查gtid_executed传输给接收者的GTID集:

    mysql >选择@@GLOBAL.GTID_EXECUTED;

在MySQL 8.0中,默认情况下,复制元数据存储库保存在克隆操作期间从捐赠方复制到接收方的表中。复制元数据存储库保存与复制相关的配置设置,可以在克隆操作后正确地恢复复制。

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

  • 从MySQL 8.0.19,表mysql.slave_relay_log_info(应用程序元数据存储库)和mysql.slave_worker_info(应用程序工作者元数据存储库)也会被复制。

有关每个表中包含的内容的列表,请参见第17.2.4.2节,“复制元数据存储库”.注意,如果设置master_info_repository =文件而且relay_log_info_repository =文件在服务器上使用(这不是MySQL 8.0中的默认值,已弃用),复制元数据存储库不会被克隆;它们只有在表格是集。

克隆用于复制的步骤如下:

  1. 对于group Replication的新组成员,首先按照下面的说明为group Replication配置MySQL服务器实例第18.2.1.6节,“将实例添加到组”.还设置了中描述的克隆先决条件第18.5.3.2节,“用于分布式恢复的克隆”.当你的问题开始GROUP_REPLICATION在连接成员上,克隆操作由Group Replication自动管理,因此不需要手动执行操作,也不需要在连接成员上执行任何进一步的设置步骤。

  2. 对于源/副本MySQL复制拓扑中的副本,首先手动将数据从捐赠MySQL服务器实例克隆到接收方。捐赠方必须是复制拓扑中的源或副本。有关克隆说明,请参见5.6.7.3节,“克隆远程数据”

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

    • 对于基于gtid的复制,如果收件人配置了gtid_mode =对并从捐赠者那里克隆出gtid_mode =对ON_PERMISSIVE,或OFF_PERMISSIVE,gtid_executed来自捐赠方的GTID集应用于接收者。如果从拓扑中已经存在的副本克隆收件人,则使用GTID自动定位的收件人上的复制通道可以在通道启动时,在克隆操作之后自动恢复复制。如果您只想使用这些相同的通道,则不需要执行任何手动设置。

    • 对于基于复制的二进制日志文件位置,如果接收方是MySQL 8.0.17或8.0.18,则发送方的二进制日志位置不会应用到接收方,只会记录在性能模式中clone_status表格因此,必须手动设置使用基于二进制日志文件位置复制的接收端上的复制通道,以便在克隆操作后恢复复制。确保这些通道没有配置为在服务器启动时自动启动复制,因为它们还没有二进制日志位置,并试图从头开始启动复制。

    • 对于基于复制的二进制日志文件位置,如果接收方的MySQL 8.0.19或更高,则发送方的二进制日志位置将应用于接收方。在重新启动复制之前,使用基于二进制日志文件位置的复制的接收端上的复制通道会自动尝试使用克隆的中继日志信息执行中继日志恢复过程。对于单线程副本(replica_parallel_workersslave_parallel_workers设置为0),则在没有任何其他问题的情况下,中继日志恢复应该会成功,使通道能够在不进行进一步设置的情况下恢复复制。对于多线程副本(replica_parallel_workersslave_parallel_workers大于0),中继日志恢复很可能失败,因为它通常不能自动完成。在这种情况下,将发出一条错误消息,您必须手动设置通道。

  4. 如果您需要手动设置克隆的复制通道,或者希望在收件人上使用不同的复制通道,下面的说明提供了将收件人MySQL服务器实例添加到复制拓扑的摘要和简短示例。还请参阅应用于复制设置的详细说明。

    • 要将收件人MySQL服务器实例添加到使用基于gtid的事务作为复制数据源的MySQL复制拓扑中,请根据需要配置实例,请遵循下面的说明第17.1.3.4节,“使用gtid设置复制”.为实例添加复制通道,如下所示。的将复制源更改为语句(来自MySQL 8.0.23)或改变主语句(在MySQL 8.0.23之前)必须定义源的主机地址和端口号SOURCE_AUTO_POSITION|MASTER_AUTO_POSITION选项应该启用,如下所示:

      将MASTER改为MASTER_HOST = 'source_host_name”,MASTER_PORT =source_port_num,……Master_auto_position = 1,用于通道'setup_channel”;mysql>启动SLAVEuser_name'密码= '密码“用于频道”setup_channel”;从MySQL 8.0.22和8.0.23:MySQL >更改源到源主机= 'source_host_name”,SOURCE_PORT =source_port_num,……Source_auto_position = 1,用于通道'setup_channel”;mysql备份数据库user_name'密码= '密码“用于频道”setup_channel”;
    • 要将收件人MySQL服务器实例添加到使用基于二进制日志文件位置复制的MySQL复制拓扑中,请根据需要配置实例,请遵循下面的说明第17.1.2节,“建立基于复制的二进制日志文件位置”.使用在克隆操作期间传输给接收者的二进制日志位置,为实例添加复制通道,如下面的简短示例所示:

      mysql>从performance_schema.clone_status中选择BINLOG_FILE, BINLOG_POSITION将MASTER改为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>启动SLAVEuser_name'密码= '密码“用于频道”setup_channel”;从performance_schema.clone_status中选择BINLOG_FILE, BINLOG_POSITION;mysql>将SOURCE改为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备份数据库user_name'密码= '密码“用于频道”setup_channel”;