17.1.2 配置基于二进制日志的主从
本节介绍如何设置 MySQL 服务器使用基于二进制日志文件的复制。设置复制有许多不同的方法,具体使用的方法取决于你设置复制的方式,以及你在要复制的源节点上的数据库中是否已经有数据。
提示
如果要部署多个 MySQL 实例,可以使用 InnoDB Cluster 它能使你在 MySQL Shell 中轻松管理一组 MySQL 服务器实例. InnoDB Cluster 将 MySQL 组复制 (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节,“复制和二进制日志记录选项和变量”.
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: