Documentation Home

17.1.2.6 设置副本

以下部分描述了如何设置副本。在继续之前,请确保您拥有:

接下来的步骤取决于您是否有现有数据要导入到副本中。有关详细信息,请参阅 第 17.1.2.5 节,“为数据快照选择方法”。选择以下选项之一:

17.1.2.6.1 使用新源和副本设置复制

当没有要导入的先前数据库的快照时,将副本配置为从新源开始复制。

要在源和新副本之间设置复制:

  1. 启动副本。

  2. 执行一个CHANGE REPLICATION SOURCE TO| CHANGE MASTER TO副本上的语句以设置源配置。请参阅 第 17.1.2.7 节,“在副本上设置源配置”

在每个副本上执行这些副本设置步骤。

如果您正在设置新服务器,但具有来自要加载到复制配置中的不同服务器的现有数据库转储,也可以使用此方法。通过将数据加载到新源,数据会自动复制到副本。

如果您要使用来自不同现有数据库服务器的数据来设置新的复制环境以创建新源,请在新源上运行从该服务器生成的转储文件。数据库更新会自动传播到副本:

$> mysql -h source < fulldb.dump
17.1.2.6.2 使用现有数据设置复制

使用现有数据设置复制时,在开始复制之前将快照从源传输到副本。将数据导入副本的过程取决于您如何在源上创建数据快照。

小费

要部署多个 MySQL 实例,您可以使用InnoDB Cluster ,它使您可以轻松地在MySQL Shell中管理一组 MySQL 服务器实例。InnoDB Cluster 将 MySQL Group Replication 包装在一个编程环境中,使您能够轻松部署 MySQL 实例集群以实现高可用性。此外,InnoDB Cluster 与MySQL Router无缝连接,使您的应用程序无需编写自己的故障转移过程即可连接到集群。但是,对于不需要高可用性的类似用例,您可以使用InnoDB ReplicaSet。可以在此处找到 MySQL Shell 的安装说明。

笔记

如果要复制以创建新副本的复制源服务器或现有副本有任何计划事件,请确保在启动新副本之前禁用这些事件。如果事件在已在源上运行的新副本上运行,则重复操作会导致错误。Event Scheduler 由 event_scheduler系统变量控制,默认为ONMySQL 8.0,因此在新副本启动时默认运行原始服务器上活动的事件。要停止所有事件在新副本上运行,请将 event_scheduler系统变量设置为OFFDISABLED在新副本上。或者,您可以使用该ALTER EVENT语句将单个事件设置为 DISABLEDISABLE ON SLAVE阻止它们在新副本上运行。您可以使用 SHOW语句或信息架构EVENTS 表列出服务器上的事件。有关详细信息,请参阅 第 17.5.1.16 节,“调用功能的复制”

作为以这种方式创建新副本的替代方法,MySQL Server 的克隆插件可用于将所有数据和复制设置从现有副本传输到克隆。有关使用此方法的说明,请参阅 第 5.6.7.7 节,“为复制而克隆”

按照此过程设置与现有数据的复制:

  1. 如果您使用 MySQL 服务器的克隆插件从现有副本创建克隆(请参阅 第 5.6.7.7 节,“为复制而克隆”),数据已经传输。否则,使用以下方法之一将数据导入副本。

    1. 如果您使用mysqldump,启动副本服务器,确保复制不会通过使用该 --skip-slave-start 选项或从 MySQL 8.0.24 skip_slave_start 系统变量开始。然后导入转储文件:

      $> mysql < fulldb.dump
    2. 如果您使用原始数据文件创建了快照,请将数据文件提取到副本的数据目录中。例如:

      $> tar xvf dbdump.tar

      您可能需要设置文件的权限和所有权,以便副本服务器可以访问和修改它们。然后启动副本服务器,确保复制不会通过使用 --skip-slave-start 选项启动,或者从 MySQL 8.0.24 开始, skip_slave_start 系统变量。

  2. 使用来自源的复制坐标配置副本。这告诉副本二进制日志文件和文件中需要开始复制的位置。此外,使用源的登录凭据和主机名配置副本。有关CHANGE REPLICATION SOURCE TO|的更多信息 CHANGE MASTER TO需要声明,请参阅 第 17.1.2.7 节,“在副本上设置源配置”

  3. 通过发出 START REPLICA(或在 MySQL 8.0.22 之前 START SLAVE)语句启动复制线程。

执行此过程后,副本连接到源并复制自拍摄快照以来源上发生的任何更新。如果由于任何原因无法复制,则会向副本的错误日志发出错误消息。

副本使用记录在其连接元数据存储库和应用程序元数据存储库中的信息来跟踪它已处理了多少源的二进制日志。从 MySQL 8.0 开始,默认情况下,这些存储库是数据库中命名的 slave_master_info表 。不要删除或编辑这些表,除非 您确切地知道您在做什么并且完全理解其中的含义。即使在这种情况下,您也最好使用 | slave_relay_log_infomysqlCHANGE REPLICATION SOURCE TOCHANGE MASTER TO更改复制参数的语句。副本使用语句中指定的值自动更新复制元数据存储库。有关更多信息,请参阅 第 17.2.4 节,“中继日志和复制元数据存储库”

笔记

副本的连接元数据存储库的内容会覆盖命令行或my.cnf. 有关详细信息,请参阅 第 17.1.6 节,“复制和二进制日志记录选项和变量”

源的单个快照足以用于多个副本。要设置其他副本,请使用相同的源快照并按照刚刚描述的过程的副本部分进行操作。