要将源配置为使用基于二进制日志文件位置的复制,您必须确保启用二进制日志记录,并建立唯一的服务器 ID。
复制拓扑中的每个服务器都必须配置一个唯一的服务器 ID,您可以使用
server_id
系统变量指定该 ID。此服务器 ID 用于标识复制拓扑中的各个服务器,并且必须是介于 1 和 (2 32 )−1 之间的正整数。server_id
您可以通过发出如下语句动态
更改
值:
SET GLOBAL server_id = 2;
使用默认服务器 ID 0,源拒绝来自副本的任何连接,并且副本拒绝连接到源,因此不能在复制拓扑中使用此值。除此之外,您可以选择如何组织和选择服务器 ID,只要每个服务器 ID 与复制拓扑中任何其他服务器使用的每个其他服务器 ID 不同即可。请注意,如果先前为服务器 ID 设置了 0 值,则必须重新启动服务器以使用新的非零服务器 ID 初始化源。否则,不需要重新启动服务器,除非您需要启用二进制日志记录或进行其他需要重新启动的配置更改。
必须在源上启用
二进制日志记录,因为二进制日志是将更改从源复制到其副本的基础。如果使用该选项未在源上启用二进制日志记录log-bin
,则无法进行复制。要在尚未启用的服务器上启用二进制日志记录,您必须重新启动服务器。在这种情况下,关闭 MySQL 服务器并编辑
my.cnf
ormy.ini
文件。在[mysqld]
配置文件的部分中,添加log-bin
和
server-id
选项。如果这些选项已经存在,但被注释掉了,请取消注释这些选项并根据您的需要进行更改。例如,要使用日志文件名前缀启用二进制日志记录
mysql-bin
,并将服务器 ID 配置为 1,请使用以下行:
[mysqld]
log-bin=mysql-bin
server-id=1
进行更改后,重新启动服务器。
以下选项会影响此过程:
InnoDB
为了在使用事务 的复制设置中获得最大可能的持久性和一致性 ,您应该在源 文件 中使用innodb_flush_log_at_trx_commit=1
and 。sync_binlog=1
my.cnf
确保
skip_networking
系统变量未在您的源上启用。如果已禁用网络,则副本无法与源通信并且复制失败。