#### 17.1.2.2 设置副本配置

每个副本必须具有唯一的服务器 ID，由[`server_id`](replication-options.html#sysvar_server_id)系统变量。如果要设置多个副本，每个副本都必须具有唯一的[`server_id`](replication-options.html#sysvar_server_id)值不同于源和任何其他副本的值。如果副本的服务器 ID 尚未设置，或者当前值与您为源或其他副本选择的值冲突，则必须更改它。

默认[`server_id`](replication-options.html#sysvar_server_id)值为 1。您可以更改server_id[`通过发出这样的语句来动态地赋值：`](replication-options.html#sysvar_server_id)请注意，服务器 ID 的值为 0 会阻止副本连接到源。

```
SET GLOBAL server_id = 21;
```

如果先前设置了该服务器 ID 值（这是早期版本中的默认值），则必须重新启动服务器以使用新的非零服务器 ID 初始化副本。否则，当您更改服务器 ID 时不需要重新启动服务器，除非您进行其他需要它的配置更改。例如，如果在服务器上禁用了二进制日志记录并且您希望为您的副本启用它，则需要重新启动服务器才能启用它。如果要关闭副本服务器，则可以编辑

\[mysqld]`配置文件的部分以指定唯一的服务器 ID。`例如：默认情况下，在所有服务器上启用二进制日志记录。

```
[mysqld]
server-id=21
```

副本不需要启用二进制日志记录以进行复制。但是，副本上的二进制日志记录意味着副本的二进制日志可用于数据备份和崩溃恢复。启用了二进制日志记录的副本也可以用作更复杂的复制拓扑的一部分。例如，您可能希望使用这种链式安排设置复制服务器：这里，

```
A -> B -> C
```

一种`用作副本的源`乙`， 和`乙`用作副本的源`C`.`为此，`乙`必须既是来源*和*一个复制品。收到的更新来自`一种`必须由`乙`到它的二进制日志，以便传递给`C`.除了二进制日志之外，这种复制拓扑还需要系统变量[`log_replica_updates`](replication-options-binary-log.html#sysvar_log_replica_updates)（来自 MySQL 8.0.26）或[`log_slave_updates`](replication-options-binary-log.html#sysvar_log_slave_updates)（在 MySQL 8.0.26 之前）要启用。启用副本更新后，副本将从源接收并由副本的 SQL 线程执行的更新写入副本自己的二进制日志。这[`log_replica_updates`](replication-options-binary-log.html#sysvar_log_replica_updates)要么[`log_slave_updates`](replication-options-binary-log.html#sysvar_log_slave_updates)系统变量默认启用。

如果您需要在副本上禁用二进制日志记录或副本更新日志记录，您可以通过指定[`--skip-log-bin`](replication-options-binary-log.html#option_mysqld_log-bin)和[`--log-replica-updates=OFF`](replication-options-binary-log.html#sysvar_log_replica_updates)要么[`--log-slave-updates=OFF`](replication-options-binary-log.html#sysvar_log_slave_updates)副本的选项。如果您决定在副本上重新启用这些功能，请删除相关选项并重新启动服务器。
