Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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

以下部分包含了mysqld选项和服务器变量,用于复制和二进制日志记录。源和副本服务器的选项和变量单独介绍,二进制日志记录和全局事务 ID 也单独介绍。快速参考表提供了这些选项和变量的基本信息。

特别重要的是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 server_uuid
Scope 全局
Dynamic
SET_VAR Hint Applies
Type 字符串

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

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

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

auto.cnf文件的格式类似于my.cnfmy.ini文件。auto.cnf文件只有一个[auto]部分,包含一个server_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 在副本上重置。

服务器的 server_uuid 也用于 GTIDs 中的事务,来自该服务器的交易。更多信息,请见 第19.1.3节,“使用全局事务标识符进行复制”

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