本节介绍如何设置 MySQL 服务器以使用基于二进制日志文件位置的复制。设置复制有多种不同的方法,要使用的确切方法取决于您设置复制的方式,以及您在要复制的源上的数据库中是否已有数据。
要部署多个 MySQL 实例,您可以使用InnoDB Cluster ,它使您可以轻松地在MySQL Shell中管理一组 MySQL 服务器实例。InnoDB Cluster 将 MySQL Group Replication 包装在一个编程环境中,使您能够轻松部署 MySQL 实例集群以实现高可用性。此外,InnoDB Cluster 与MySQL Router无缝连接,使您的应用程序无需编写自己的故障转移过程即可连接到集群。但是,对于不需要高可用性的类似用例,您可以使用InnoDB ReplicaSet。可以在此处找到 MySQL Shell 的安装说明。
有一些通用任务对所有设置都是通用的:
在源上,您必须确保启用二进制日志记录,并配置一个唯一的服务器 ID。这可能需要重新启动服务器。请参阅 第 17.1.2.1 节,“设置复制源配置”。
在要连接到源的每个副本上,您必须配置一个唯一的服务器 ID。这可能需要重新启动服务器。请参阅 第 17.1.2.2 节,“设置副本配置”。
(可选)为您的副本创建一个单独的用户,以便在读取二进制日志进行复制时使用源进行身份验证。请参阅 第 17.1.2.3 节,“为复制创建用户”。
在创建数据快照或开始复制过程之前,您应该在源上记录二进制日志中的当前位置。配置副本时需要此信息,以便副本知道二进制日志中的何处开始执行事件。请参阅 第 17.1.2.4 节,“获取复制源二进制日志坐标”。
如果源上已有数据并想用它来同步副本,则需要创建数据快照以将数据复制到副本。您使用的存储引擎会影响您创建快照的方式。使用时
MyISAM
,必须停止处理源上的语句以获得读锁,然后获取其当前二进制日志坐标并转储其数据,然后才允许源继续执行语句。如果不停止语句的执行,数据转储和源状态信息将变得不匹配,从而导致副本上的数据库不一致或损坏。有关复制的更多信息MyISAM
源,请参阅 第 17.1.2.4 节,“获取复制源二进制日志坐标”。如果您正在使用InnoDB
,则不需要读锁并且足够长的事务来传输数据快照就足够了。有关详细信息,请参阅 第 15.19 节,“InnoDB 和 MySQL 复制”。使用连接到源的设置配置副本,例如主机名、登录凭据以及二进制日志文件名和位置。请参阅 第 17.1.2.7 节,“在副本上设置源配置”。
根据您的系统对源和副本实施特定于复制的安全措施。请参阅 第 17.3 节,“复制安全”。
安装过程中的某些步骤需要
SUPER
权限。如果您没有此权限,则可能无法启用复制。
配置基本选项后,选择您的方案:
要为不包含数据的源和副本的全新安装设置复制,请参阅 第 17.1.2.6.1 节,“使用新源和副本设置复制”。
要使用现有 MySQL 服务器中的数据设置新源的复制,请参阅 第 17.1.2.6.2 节,“使用现有数据设置复制”。
要将副本添加到现有复制环境,请参阅 第 17.1.2.8 节,“将副本添加到复制环境”。
在管理 MySQL 复制服务器之前,请阅读整章并尝试第 13.4.1 节“控制源服务器的 SQL 语句”和 第 13.4.2 节“控制副本服务器的 SQL 语句” 中提到的所有语句 。还要熟悉 第 17.1.6 节“复制和二进制日志记录选项和变量”中描述的复制启动选项。