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


19.1.2.6 设置副本

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

下一步操作取决于您是否需要将数据导入到副本服务器。如果您需要导入数据,请参阅第19.1.2.5节,“选择数据快照方法”。选择以下选项:

19.1.2.6.1 设置副本 with New Source and Replicas

如果没有数据快照,可以配置副本以从新源开始复制。

要设置副本之间的源和新副本:

  1. 启动副本。

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

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

这也可以用于在新服务器上设置副本,但使用来自不同服务器的数据dump文件将数据加载到副本配置中。这样,数据将自动复制到副本服务器上。

如果您正在设置新复制环境,并且要使用来自不同现有数据库服务器的数据创建新源,运行来自该服务器的dump文件在新源上。数据库更新将自动传播到副本服务器:

$> mysql -h source < fulldb.dump
19.1.2.6.2 设置副本 with Existing Data

在设置复制与现有数据时,先将快照从源服务器复制到副本,然后启动复制。将数据导入副本的过程取决于您在源服务器上创建快照的方式。

Tip

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

Note

如果复制源服务器或您要复制的现有副本有计划事件,确保在创建新副本时禁用这些事件。如果事件在新副本上运行,但已经在源服务器上运行过,重复的操作将导致错误。事件调度器由event_scheduler系统变量(默认为ON)控制,因此在新副本启动时,原服务器上的活动事件将自动运行。要在新副本上停止所有事件,设置event_scheduler系统变量为OFFDISABLED,或者使用ALTER EVENT语句将单个事件设置为DISABLEDISABLE ON REPLICA以防止它们在新副本上运行。您可以使用SHOW语句或信息_schemaEVENTS表来列出服务器上的事件。更多信息,请见第19.5.1.16节,“Replication of Invoked Features”

作为创建新副本的替代方法,MySQL Server的克隆插件可以将现有副本的所有数据和复制设置从源服务器复制到克隆。要使用该方法,请见第7.6.7.7节,“Cloning for Replication”

按照以下步骤设置复制与现有数据:

  1. 如果您使用 MySQL 服务器的克隆插件从现有副本创建克隆(见第7.6.7.7节,“克隆复制”),数据已经被转移。否则,使用以下方法将数据导入副本。

    1. 如果您使用mysqldump,启动副本服务器,确保复制不启动,使用--skip-replica-start启动服务器。然后,导入备份文件:

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

      $> tar xvf dbdump.tar

      您可能需要设置文件权限和所有权,以便副本服务器可以访问和修改文件。然后,启动副本服务器,确保复制不启动,使用--skip-replica-start

  2. 配置副本,以从源获取复制坐标。这样告诉副本,需要从源的二进制日志文件和文件位置开始复制。同时,配置副本,以源的登录凭证和主机名为准。关于CHANGE REPLICATION SOURCE TO语句的详细信息,见第19.1.2.7节,“设置副本配置”

  3. 使用START REPLICA语句启动复制线程。

在执行该过程后,副本将连接到源并复制源上发生的所有更新。错误信息将被记录到副本的错误日志中,如果副本无法复制任何原因。

副本使用连接元数据存储库和应用程序元数据存储库来跟踪它已经处理的源二进制日志文件的部分。默认情况下,这些存储库是mysql数据库中的slave_master_infoslave_relay_log_info表。不要删除或编辑这些表,除非您知道自己在做什么,并且完全理解后果。即使在这种情况下,也建议使用CHANGE REPLICATION SOURCE TO语句更改复制参数。副本将使用语句中的值自动更新复制元数据存储库。见第19.2.4节,“Relay Log and Replication Metadata Repositories”,了解更多信息。

Note

复制服务器的连接元数据存储库将覆盖命令行或my.cnf中指定的部分服务器选项。更多信息,请见第19.1.6节,“复制和二进制日志选项和变量”

单个源快照足以满足多个复制服务器。要设置多个复制服务器,请使用同一个源快照,并按照前面描述的复制部分进行操作。