属性所指定的每个副本必须具有唯一的服务器IDserver_id
系统变量。如果您正在设置多个副本,每个副本必须具有唯一的server_id
值,该值与源的值和任何其他副本的值不同。如果副本的服务器ID尚未设置,或者当前值与为源副本或其他副本选择的值冲突,则必须更改它。
默认的server_id
取值为1。你可以更改server_id
通过发出这样的语句动态地赋值:
SET GLOBAL server_id = 21;
请注意,如果服务器ID值为0,则副本将无法连接到源。如果之前设置了该服务器ID值(这是早期版本中的默认值),则必须重新启动服务器,以使用新的非零服务器ID初始化副本。否则,更改服务器ID时不需要重新启动服务器,除非您进行了其他需要重新启动服务器的配置更改。例如,如果在服务器上禁用了二进制日志记录,而您希望在副本上启用它,则需要重新启动服务器才能启用它。
如果要关闭副本服务器,可以编辑(mysqld)
节中指定唯一的服务器ID。例如:
(mysqld)服务器id = 21
在所有服务器上默认启用二进制日志记录。复制不需要启用二进制日志记录才能进行复制。但是,副本上的二进制日志意味着副本的二进制日志可以用于数据备份和崩溃恢复。启用了二进制日志记录的副本也可以用作更复杂的复制拓扑的一部分。例如,你可能想要使用这样的链式安排来建立复制服务器:
A -> b -> c
在这里,一个
作为副本的源B
,B
作为副本的源C
.为了实现这个目标,B
必须两者都是来源而且一个副本。从一个
必须由B
到它的二进制日志,以便传递给C
.除了二进制日志记录,这个复制拓扑还需要系统变量log_replica_updates
(从MySQL 8.0.26)或log_slave_updates
(MySQL 8.0.26之前)。启用副本更新后,副本将从源接收并由副本的SQL线程执行的更新写入副本自己的二进制日志。的log_replica_updates
或log_slave_updates
系统变量默认为使能。
属性来禁用二进制日志记录或副本更新日志记录——skip-log-bin
而且——log-replica-updates =了
或——log-slave-updates =了
副本的选项。如果您决定在副本上重新启用这些特性,请删除相关选项并重新启动服务器。