本节介绍如何设置 MySQL 服务器以使用基于二进制日志文件位置的复制。有许多不同的方法可以设置复制,要使用哪种方法取决于您如何设置复制以及您是否已经在源上的数据库中拥有想要复制的数据。
要部署多个 MySQL 实例,您可以使用 InnoDB 集群,它使您能够轻松地在 MySQL Shell 中管理一组 MySQL 服务器实例。InnoDB 集群将 MySQL 组复制封装在一个编程环境中,使您能够轻松部署一组 MySQL 实例以实现高可用性。此外,InnoDB 集群与 MySQL 路由器 无缝集成,使您的应用程序能够连接到集群而无需编写自己的故障转移过程。但是,对于类似的用例,这些用例不需要高可用性,您可以使用 InnoDB 副本集。有关 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 节,“复制和二进制日志选项和变量” 中描述的复制启动选项。