每个副本必须具有唯一的服务器 ID,如系统变量 server_id
所指定的那样。如果您正在设置多个副本,每个副本必须具有唯一的 server_id
值,该值不同于源服务器和其他副本的值。如果副本的服务器 ID 尚未设置,或者当前值与源服务器或其他副本的值冲突,则必须更改它。
默认的 server_id
值为 1。您可以通过发出类似以下语句来动态更改 server_id
值:
SET GLOBAL server_id = 21;
注意,如果服务器 ID 的值为 0,将阻止副本连接到源服务器。如果以前曾经设置了该服务器 ID 值(在早期版本中是默认值),则必须重新启动服务器以使用新的非零服务器 ID。否则,在更改服务器 ID 时不需要重新启动服务器,除非您进行了其他配置更改,需要重新启动。
如果您关闭了副本服务器,可以编辑配置文件的 [mysqld]
部分,以指定唯一的服务器 ID。例如:
[mysqld]
server-id=21
二进制日志记录默认情况下在所有服务器上启用。副本不需要启用二进制日志记录以进行复制。但是,副本上的二进制日志记录意味着副本的二进制日志可以用于数据备份和崩溃恢复。启用二进制日志记录的副本也可以作为更复杂的复制拓扑结构的一部分。例如,您可能想要设置使用链式安排的复制服务器:
A -> B -> C
这里,A
作为副本 B
的源,B
作为副本 C
的源。为了使其生效,B
必须同时作为源 和 副本。从 A
接收的更新必须被 B
记录到其二进制日志中,以便传递给 C
。此外,还需要启用系统变量 log_replica_updates
。启用副本更新后,副本将写入从源服务器接收的更新和执行的 SQL 线程到其自己的二进制日志中。log_replica_updates
默认情况下启用。
如果您需要在副本上禁用二进制日志记录或副本更新日志记录,可以通过指定副本的 --skip-log-bin
和 --log-replica-updates=OFF
选项来实现。如果您决定重新启用这些功能,可以删除相关选项并重新启动服务器。