19.1.2 设置基于二进制日志文件位置的复制
本节描述了如何将 MySQL 服务器设置为使用基于二进制日志文件位置的复制。有多种方法可以设置复制,具体方法取决于您要设置复制的方式,以及您在源数据库中是否已经有数据。
要部署多个 MySQL 实例,可以使用 InnoDB 集群,它可以让您轻松地管理一组 MySQL 服务器实例,以实现高可用性。InnoDB 集群将 MySQL Group Replication 包装在一个程序环境中,使您可以轻松地部署一组 MySQL 实例以实现高可用性。此外,InnoDB 集群与 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
时,您需要停止源端的语句处理,以获取读锁,然后获取当前二进制日志坐标并将数据dump出来,然后允许源端继续执行语句。如果您不停止语句执行,数据dump和源端状态信息将变得不一致,从而导致副本中的数据库不一致或损坏。如果您使用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节,“复制和二进制日志选项和变量”中的启动选项。