下面几节描述如何设置副本。在继续之前,请确保您已具备:
使用必要的配置属性配置源。看到17.1.2.1节,“设置复制源配置”.
获取源状态信息,或在数据快照关闭期间生成的源二进制日志索引文件的副本。看到17.1.2.4节“获取复制源二进制日志坐标”.
在源端,释放读锁:
mysql>解锁表
在副本上,编辑MySQL配置。看到章节17.1.2.2,“设置副本配置”.
接下来的步骤取决于是否有要导入到副本的现有数据。看到第17.1.2.5节“选择数据快照的方法”获取更多信息。选择以下其中一项:
如果没有要导入的数据库快照,请参见17.1.2.6.1节,“使用新源和副本建立复制”.
如果要导入数据库的快照,请参见第17.1.2.6.2节,“使用现有数据建立复制”.
当没有要导入的前一个数据库的快照时,将副本配置为从新的源开始复制。
使用实例在一个源数据和一个新的副本之间建立复制。
启动副本。
执行一个
将复制源更改为
|将master更改为
语句,以设置源配置。看到章节17.1.2.7,“在副本上设置源配置”.
在每个副本上执行这些副本设置步骤。
如果您正在设置新的服务器,但有来自不同服务器的数据库的现有转储,并且希望将该转储加载到复制配置中,也可以使用此方法。通过将数据加载到新的源中,数据将自动复制到副本。
如果您正在使用来自不同现有数据库服务器的数据来设置新的复制环境,以创建新的源,则在新源上运行该服务器生成的转储文件。数据库更新会自动传播到副本:
Shell > mysql -h source < fulldb.dump
使用已有数据建立复制时,请在开始复制之前将快照从源端传输到副本。将数据导入副本的过程取决于您如何在源上创建数据快照。
要部署多个MySQL实例,可以使用InnoDB集群它可以让您轻松地管理一组MySQL服务器实例MySQL壳.InnoDB集群将MySQL组复制封装在编程环境中,使您可以轻松部署MySQL实例集群以实现高可用性。此外,InnoDB集群与MySQL路由器,使您的应用程序可以连接到集群,而无需编写自己的故障转移过程。然而,对于不需要高可用性的类似用例,您可以使用InnoDB ReplicaSet.MySQL Shell的安装说明可以找到在这里.
如果要复制以创建新副本的复制源服务器或现有副本具有任何计划事件,请确保在启动新副本之前已禁用这些计划事件。如果事件在已经在源上运行的新副本上运行,重复的操作将导致错误。事件调度器由event_scheduler
系统变量,默认为在
因此,当新的副本启动时,原服务器上的活动事件默认运行。要停止在新副本上运行的所有事件,请设置event_scheduler
系统变量为从
或禁用
在新的复制品上。或者,您可以使用改变事件
语句将单个事件设置为禁用
或在slave上禁用
防止它们在新的副本上运行。属性可以列出服务器上的事件显示
语句或信息模式事件
表格有关更多信息,请参见17.5.1.16节,“被调用特性的复制”.
作为创建一个新的副本的替代方法,MySQL服务器的克隆插件可以用来将所有数据和复制设置从一个现有的副本转移到一个克隆。有关使用此方法的说明,请参见第5.6.7.6节“为复制而克隆”.
按照以下步骤设置现有数据的复制:
如果您使用MySQL服务器的克隆插件从现有副本创建一个克隆(请参阅第5.6.7.6节“为复制而克隆”),则资料已传送完毕。否则,使用以下方法之一将数据导入副本。
如果你用过, mysqldump,启动副本服务器,确保复制不会使用
——skip-slave-start
选项,或从MySQL 8.0.24,该skip_slave_start
系统变量。然后导入转储文件:Shell > mysql < fulldb.dump
如果使用原始数据文件创建快照,请将数据文件解压缩到副本的数据目录中。例如:
Shell > tar XVF dbdump.tar
您可能需要设置文件的权限和所有权,以便副本服务器可以访问和修改它们。然后启动副本服务器,确保复制不会通过使用
——skip-slave-start
选项,或从MySQL 8.0.24,该skip_slave_start
系统变量。
使用来自源的复制坐标配置副本。这将告诉副本二进制日志文件以及需要在文件中开始复制的位置。另外,使用源的登录凭据和主机名配置副本。有关的更多信息
将复制源更改为
|将master更改为
所需声明,请参见章节17.1.2.7,“在副本上设置源配置”.通过发出命令启动复制线程
启动副本|从站
声明。
执行此过程后,副本将连接到源,并复制自快照拍摄以来源上发生的任何更新。如果由于任何原因无法复制,则错误消息将发送到副本的错误日志。
副本使用记录在其连接元数据存储库和应用程序元数据存储库中的信息来跟踪它处理了多少源二进制日志。从MySQL 8.0开始,默认情况下,这些存储库都是表slave_master_info
而且slave_relay_log_info
在mysql
数据库。做不删除或编辑这些表,除非您确切地知道自己在做什么,并完全理解其含义。即使在这种情况下,也最好使用将复制源更改为
|将master更改为
语句更改复制参数。副本使用语句中指定的值自动更新复制元数据存储库。看到17.2.4节,“中继日志和复制元数据存储库”,以获取更多资料。
副本的连接元数据存储库的内容覆盖在命令行或中指定的一些服务器选项my.cnf
.看到17.1.6节,“复制和二进制日志记录选项和变量”浏览详情。
源的单个快照足以提供多个副本。要设置其他副本,请使用相同的源快照并执行刚才描述的过程中的副本部分。