每个副本必须具有唯一的服务器 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
选项来实现。如果您决定在副本上重新启用这些功能,请删除相关选项并重新启动服务器。