Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Replication and Binary Logging Options and Variables

19.1.6 复制和二进制日志记录选项和变量

以下部分包含关于 mysqld 选项和服务器变量的信息,这些选项和变量用于复制和控制二进制日志。源和复制服务器的选项和变量单独涵盖,二进制日志记录和全局事务标识符(GTIDs)相关的选项和变量也单独涵盖。还包括一个快速参考表,提供这些选项和变量的基本信息。

特别重要的是 server_id 系统变量。

Command-Line Format --server-id=#
System Variable server_id
Scope 全局
Dynamic
SET_VAR Hint Applies
Type 整数
Default Value 1
Minimum Value 0
Maximum Value 4294967295

该变量指定服务器 ID。server_id 默认设置为 1。服务器可以使用默认 ID 启动,但当启用二进制日志记录时,如果您没有明确设置 server_id,将发出信息性消息。

对于用于复制拓扑结构的服务器,您必须为每个复制服务器指定唯一的服务器 ID,范围从 1 到 232 − 1。唯一 意味着每个 ID 都必须不同于任何其他 ID,用于拓扑结构中的任何其他源或复制服务器。有关更多信息,请参阅 第 19.1.6.2 节,“复制源选项和变量”第 19.1.6.3 节,“复制服务器选项和变量”

如果服务器 ID 设置为 0,二进制日志记录将继续,但源服务器 ID 为 0 将拒绝来自复制服务器的任何连接,而复制服务器 ID 为 0 将拒绝连接到源服务器。请注意,虽然您可以动态更改服务器 ID 到非零值,但这样做不会立即启用复制。您必须更改服务器 ID,然后重新启动服务器以初始化复制服务器。

有关更多信息,请参阅 第 19.1.2.2 节,“设置复制配置”

server_uuid

MySQL 服务器生成一个真正的 UUID,除了默认或用户提供的服务器 ID 设置在 server_id 系统变量中。这可以作为全局、只读变量 server_uuid

Note

存在 server_uuid 系统变量不改变为每个 MySQL 服务器设置唯一的 server_id 值的要求,以便准备和运行 MySQL 复制,如本节前面所述。

System Variable 服务器UUID
Scope 全局
Dynamic
SET_VAR Hint Applies
Type 字符串

当 MySQL 服务器启动时,自动获取 UUID,如下所示:

  1. 尝试读取和使用文件 数据目录/auto.cnf 中的 UUID(其中 数据目录 是服务器的数据目录)。

  2. 如果 数据目录/auto.cnf 不存在,生成一个新的 UUID 并将其保存到该文件中,如果必要则创建该文件。

auto.cnf 文件的格式类似于 my.cnf 或 my.ini 文件。auto.cnf 文件只有一个 [auto] 部分,包含一个 服务器UUID 设置和值;文件的内容类似于以下所示:

[auto]
server_uuid=8a94f357-aab4-11df-86ab-c80aa9429562
Important

auto.cnf 文件是自动生成的;请勿尝试写入或修改该文件。

在使用 MySQL 复制时,源和副本知道彼此的 UUID。副本的 UUID 值可以在 SHOW REPLICAS 的输出中看到。执行 START REPLICA 后,源的 UUID 值将在副本的 SHOW REPLICA STATUS 的输出中可用。

Note

发出 STOP REPLICARESET REPLICA 语句不会重置源的 UUID,如副本所用。

服务器的 服务器UUID 也用于 GTIDs 中的交易,详见 第 19.1.3 节,“使用全局事务标识符的复制”

当启动时,复制 I/O(receiver)线程如果其源的 UUID 等于自己的 UUID,除非设置了 --replicate-same-server-id 选项,否则将生成错误并中止。此外,复制接收器线程还将生成警告,如果以下任何一个条件为真: