以下部分介绍如何设置副本。在继续操作之前,请确保您已
使用必要的配置属性配置源。请参阅 第 19.1.2.1 节,“设置复制源配置”。
获取源状态信息,或在关闭数据快照期间制作的源二进制日志索引文件的副本。请参阅 第 19.1.2.4 节,“获取复制源二进制日志坐标”。
在源上释放读锁
mysql> UNLOCK TABLES;
在副本上编辑 MySQL 配置。请参阅 第 19.1.2.2 节,“设置副本配置”。
后续步骤取决于您是否有要导入到副本的现有数据。有关更多信息,请参阅 第 19.1.2.5 节,“选择数据快照方法”。选择以下选项之一
如果您没有要导入的数据库快照,请参阅 第 19.1.2.6.1 节,“使用新源和副本设置复制”。
如果您有要导入的数据库快照,请参阅 第 19.1.2.6.2 节,“使用现有数据设置复制”。
如果没有要导入的先前数据库的快照,请将副本配置为从新源开始复制。
要在源和新副本之间设置复制
启动副本。
在副本上执行
CHANGE REPLICATION SOURCE TO
语句以设置源配置。请参阅 第 19.1.2.7 节,“在副本上设置源配置”。
对每个副本执行这些副本设置步骤。
如果您正在设置新服务器,但拥有来自不同服务器的数据库现有转储,并且想要将其加载到复制配置中,也可以使用此方法。通过将数据加载到新源,数据会自动复制到副本。
如果您使用来自不同现有数据库服务器的数据设置新复制环境以创建新源,请在新源上运行从该服务器生成的转储文件。数据库更新会自动传播到副本
$> mysql -h source < fulldb.dump
使用现有数据设置复制时,在开始复制之前,将快照从源传输到副本。将数据导入副本的过程取决于您如何在源上创建数据快照。
要部署多个 MySQL 实例,可以使用 InnoDB 集群,它使您能够在 MySQL Shell 中轻松管理一组 MySQL 服务器实例。InnoDB 集群将 MySQL 组复制封装在编程环境中,使您能够轻松部署 MySQL 实例集群以实现高可用性。此外,InnoDB 集群与 MySQL 路由器 无缝对接,使您的应用程序能够连接到集群,而无需编写自己的故障转移流程。但是,对于不需要高可用性的类似用例,可以使用 InnoDB ReplicaSet。MySQL Shell 的安装说明可以在 此处 找到。
如果您要复制以创建新副本的复制源服务器或现有副本有任何计划事件,请确保在新副本启动之前在该副本上禁用这些事件。如果在新副本上运行已在源服务器上运行的事件,则重复操作会导致错误。事件调度程序由 event_scheduler
系统变量(默认 ON
)控制,因此在新副本启动时,原始服务器上处于活动状态的事件默认运行。要停止在新副本上运行所有事件,请将新副本上的 event_scheduler
系统变量设置为 OFF
或 DISABLED
。或者,您可以使用 ALTER EVENT
语句将各个事件设置为 DISABLE
或 DISABLE ON REPLICA
以防止它们在新副本上运行。您可以使用 SHOW
语句或信息架构 EVENTS
表列出服务器上的事件。有关更多信息,请参阅 第 19.5.1.16 节,“调用功能的复制”。
作为以这种方式创建新副本的替代方法,可以使用 MySQL Server 的克隆插件将所有数据和复制设置从现有副本传输到克隆。有关使用此方法的说明,请参阅 第 7.6.7.7 节,“复制克隆”。
按照此过程设置具有现有数据的复制
如果您使用 MySQL Server 的克隆插件从现有副本创建克隆(请参阅第 7.6.7.7 节“用于复制的克隆”),则数据已经传输。否则,使用以下方法之一将数据导入副本。
如果您使用mysqldump,请启动副本服务器,确保复制不会通过使用
--skip-replica-start
启动服务器来启动。然后导入转储文件$> mysql < fulldb.dump
如果您使用原始数据文件创建快照,请将数据文件解压缩到副本的数据目录中。例如
$> tar xvf dbdump.tar
您可能需要设置文件上的权限和所有权,以便副本服务器可以访问和修改它们。然后启动副本服务器,确保复制不会通过使用
--skip-replica-start
来启动。
使用源的复制坐标配置副本。这会告诉副本复制需要从哪个二进制日志文件和文件中的哪个位置开始。此外,使用源的登录凭据和主机名配置副本。有关所需的
CHANGE REPLICATION SOURCE TO
语句的更多信息,请参阅第 19.1.2.7 节“在副本上设置源配置”。通过发布
START REPLICA
语句来启动复制线程。
执行此过程后,副本将连接到源并复制自创建快照以来在源上发生的任何更新。如果由于任何原因无法复制,则会向副本的错误日志发出错误消息。
副本会使用其连接元数据存储库和应用器元数据存储库中记录的信息来跟踪已处理的源二进制日志的量。默认情况下,这些存储库是 mysql
数据库中名为 slave_master_info
和 slave_relay_log_info
的表。除非您确切地知道自己在做什么并且完全理解其含义,否则 不要 删除或编辑这些表。即使在这种情况下,也建议您使用 CHANGE REPLICATION SOURCE TO
语句来更改复制参数。副本会使用该语句中指定的值自动更新复制元数据存储库。有关更多信息,请参见 第 19.2.4 节,“中继日志和复制元数据存储库”。
副本的连接元数据存储库的内容会覆盖在命令行或 my.cnf
中指定的一些服务器选项。有关更多详细信息,请参见 第 19.1.6 节,“复制和二进制日志记录选项和变量”。
源的单个快照就足以供多个副本使用。要设置其他副本,请使用相同的源快照并按照刚描述的副本部分中的步骤进行操作。