以下部分介绍如何设置副本。在继续操作之前,请确保您已
使用必要的配置属性配置了源。请参阅 第 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 副本集。MySQL Shell 的安装说明可以在 这里 找到。
如果您要复制的复制源服务器或现有副本存在任何计划的事件,请确保在启动新副本之前禁用这些事件。如果新副本上运行了一个已在源上运行过的事件,重复操作会导致错误。事件调度器由 event_scheduler
系统变量(默认值为 ON
)控制,因此在启动新副本时,默认情况下会运行在原始服务器上处于活动状态的事件。要停止在新副本上运行所有事件,请将 event_scheduler
系统变量在新副本上设置为 OFF
或 DISABLED
。或者,您可以使用 ALTER EVENT
语句将单个事件设置为 DISABLE
或 DISABLE ON REPLICA
,以防止它们在新副本上运行。您可以使用 SHOW
语句或 Information Schema 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
语句更改复制参数。副本使用语句中指定的 value 自动更新复制元数据存储库。有关更多信息,请参阅 第 19.2.4 节,“中继日志和复制元数据存储库”。
副本的连接元数据存储库的内容会覆盖命令行或 my.cnf
中指定的一些服务器选项。有关更多详细信息,请参阅 第 19.1.6 节,“复制和二进制日志记录选项和变量”。
源的单个快照足以用于多个副本。要设置其他副本,请使用相同的源快照并按照刚才描述的步骤中的副本部分进行操作。