16.1.2.1 设置复制源配置

要将源配置为使用基于二进制日志文件位置的复制,必须确保启用了二进制日志记录,并构建唯一的服务器 ID。

复制拓扑中的每个服务器都必须配置有唯一的服务器 ID,您可以使用server_id系统变量指定该 ID。此服务器 ID 用于标识复制拓扑中的各个服务器,并且必须是 1 到(232)-1 之间的正整数。您可以通过发出如下语句来动态更改server_id值:

SET GLOBAL server_id = 2;

缺省服务器 ID 为 0 时,源拒绝来自副本的任何连接,而副本拒绝连接到源,因此该值不能在复制拓扑中使用。除此之外,您还可以选择组织和选择服务器 ID 的方式,只要每个服务器 ID 与复制拓扑中任何其他服务器使用的每个其他服务器 ID 不同即可。请注意,如果先前为服务器 ID 设置的值为 0,则必须重新启动服务器以使用新的非零服务器 ID 初始化源。否则,不需要重新启动服务器,除非您需要启用二进制日志记录或进行其他需要重新启动的配置更改。

必须在源上启用二进制日志记录,因为二进制日志是将更改从源复制到其副本的基础。如果未使用log-bin选项在源上启用二进制日志记录,则无法进行复制。要在尚未启用二进制日志记录的服务器上启用二进制日志记录,必须重新启动服务器。在这种情况下,请关闭 MySQL 服务器并编辑my.cnfmy.ini文件。在配置文件的[mysqld]部分中,添加log-binserver-id选项。如果这些选项已经存在,但已被 Comments 掉,请取消 Comments 这些选项并根据需要进行更改。例如,要使用日志文件名前缀mysql-bin启用二进制日志记录并将服务器 ID 配置为 1,请使用以下几行:

[mysqld]
log-bin=mysql-bin
server-id=1

进行更改后,重新启动服务器。

Note

以下选项会影响此过程:

  • 为了在使用InnoDB进行事务的复制设置中获得最大的持久性和一致性,应在源的my.cnf文件中使用innodb_flush_log_at_trx_commit=1sync_binlog=1

  • 确保未在源上启用skip_networking系统变量。如果已禁用网络连接,则副本无法与源通信,并且复制失败。