以下部分描述如何设置副本。在继续之前,请确保您已经:
-
配置了源服务器的必要配置属性。见 第 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 Cluster,它使您可以轻松地管理一组 MySQL 服务器实例,以实现高可用性。在noDB Cluster 将 MySQL 组复制包装在一个程序化环境中,以便您轻松部署一个集群的 MySQL 实例。另外,InnoDB Cluster 还与 MySQL Router 无缝集成,使您的应用程序可以连接到集群,而不需要编写自己的故障转移过程。对于不需要高可用性的类似用例,可以使用 InnoDB ReplicaSet。MySQL Shell 的安装说明可以在 这里 找到。
如果复制源服务器或现有的副本服务器上有计划的事件,请确保在创建新副本之前禁用这些事件。如果在新副本上运行了已经在源服务器上运行的事件,重复的操作将导致错误。事件计划程序由event_scheduler
系统变量控制(默认为ON
),因此原始服务器上的活动事件将在新副本启动时默认运行。要停止新副本上的所有事件,请将event_scheduler
系统变量设置为OFF
或DISABLED
。或者,您可以使用ALTER EVENT
语句将单个事件设置为DISABLE
或DISABLE ON REPLICA
,以防止它们在新副本上运行。您可以使用SHOW
语句或信息模式EVENTS
表列出服务器上的事件。有关更多信息,请参阅第 19.5.1.16 节,“复制 invoked 特性”。
作为创建新副本的替代方法,MySQL Server 的克隆插件可以用于将现有副本的所有数据和复制设置传输到克隆中。有关使用此方法的说明,请参阅第 7.6.7.7 节,“复制克隆”。
按照以下步骤设置现有数据的复制:
-
如果您使用 MySQL Server 的克隆插件从现有副本创建了克隆(参阅第 7.6.7.7 节,“复制克隆”),则数据已经传输。否则,使用以下方法之一将数据导入副本:
-
如果您使用了mysqldump,请启动副本服务器,确保不启动复制 bằng启动服务器
--skip-replica-start
。然后导入转储文件:$> mysql < fulldb.dump
-
如果您使用原始数据文件创建了快照,请将数据文件提取到副本的数据目录中。例如:
$> tar xvf dbdump.tar
您可能需要设置文件的权限和所有权,以便副本服务器可以访问和修改它们。然后启动副本服务器,确保不启动复制 bằng使用
--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 节,“复制和二进制日志选项和变量”,以获取更多详细信息。
单个源快照足以满足多个副本。要设置其他副本,请使用相同的源快照并按照刚刚描述的副本部分的过程进行操作。