本节描述如何设置 MySQL 服务器以使用基于二进制日志文件位置的复制。有多种方法可以设置复制,具体方法取决于您如何设置复制,以及是否已经在源数据库中有要复制的数据。
要部署多个 MySQL 实例,可以使用 InnoDB Cluster,它使您可以轻松地管理一组 MySQL 服务器实例,以实现高可用性。在 InnoDB Cluster 中,您可以使用 MySQL Shell。InnoDB Cluster 将 MySQL 组复制包装在一个程序化环境中,以便您轻松部署 MySQL 实例集群以实现高可用性。此外,InnoDB Cluster 还与 MySQL Router 无缝集成,使您的应用程序可以连接到集群,而不需要编写自己的故障转移过程。对于不需要高可用性的类似用例,可以使用 InnoDB ReplicaSet。MySQL Shell 的安装说明可以在 这里找到。
所有设置共有的一些通用任务:
-
在源上,您必须确保启用二进制日志记录,并配置唯一的服务器 ID。这可能需要服务器重新启动。见 第 19.1.2.1 节,“设置复制源配置”。
-
在每个副本上,您必须配置唯一的服务器 ID。这可能需要服务器重新启动。见 第 19.1.2.2 节,“设置副本配置”。
-
可选地,创建一个专门的用户供副本在与源服务器进行身份验证时使用。见 第 19.1.2.3 节,“创建复制用户”。
-
在创建数据快照或启动复制过程之前,在源上您应该记录当前二进制日志的位置。您需要这些信息来配置副本,以便副本知道从哪里开始执行事件。见 第 19.1.2.4 节,“获取复制源二进制日志坐标”。
-
如果您已经在源服务器上拥有数据并想使用它来同步副本,您需要创建数据快照以将数据复制到副本。您使用的存储引擎对创建快照的方式有影响。当您使用
MyISAM
时,必须停止源服务器上的语句处理,以获取读锁,然后获取当前二进制日志坐标,并转储数据,然后允许源服务器继续执行语句。如果您不停止语句的执行,数据转储和源服务器状态信息将不匹配,导致副本数据库不一致或损坏。有关复制MyISAM
源服务器的更多信息,请参阅 第 19.1.2.4 节,“获取复制源二进制日志坐标”。如果您使用InnoDB
,您不需要读锁,只需要一个足够长的事务来传输数据快照。有关更多信息,请参阅 第 17.19 节,“InnoDB 和 MySQL 复制”。 -
使用连接到源服务器的设置配置副本,例如主机名、登录凭证、二进制日志文件名和位置。请参阅 第 19.1.2.7 节,“在副本上设置源配置”。
-
在源服务器和副本上实施适合您系统的复制安全措施。请参阅 第 19.3 节,“复制安全”。
设置过程中的某些步骤需要 SUPER
权限。如果您没有这个权限,可能无法启用复制。
在配置基本选项后,选择您的场景:
-
要为新安装的源服务器和副本设置复制,请参阅 第 19.1.2.6.1 节,“使用新源服务器和副本设置复制”。
-
要使用现有 MySQL 服务器的数据设置复制,请参阅 第 19.1.2.6.2 节,“使用现有数据设置复制”。
-
要将副本添加到现有的复制环境中,请参阅 第 19.1.2.8 节,“将副本添加到复制环境”。
在管理 MySQL 复制服务器之前,请阅读本章的所有内容,并尝试 第 15.4.1 节,“控制源服务器的 SQL 语句” 和 第 15.4.2 节,“控制副本服务器的 SQL 语句” 中的所有语句。同时,熟悉 第 19.1.6 节,“复制和二进制日志选项和变量” 中的复制启动选项。