本节介绍如何设置 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 节,“复制和二进制日志选项和变量” 中描述的复制启动选项。