以下部分包含关于mysqld用于复制和控制二进制日志的选项和服务器变量。本文将分别介绍用于源和副本的选项和变量,以及与二进制日志记录和全局事务标识符(gtid)相关的选项和变量。还包括一套关于这些选项和变量的基本信息的快速参考表。
特别重要的是server_id
系统变量。
这个变量指定服务器ID。server_id
默认设置为1。可以使用这个默认ID启动服务器,但是当启用二进制日志记录时,如果没有设置,则会发出一条信息消息server_id
显式地指定服务器ID。
对于复制拓扑中使用的服务器,必须为每个复制服务器指定唯一的服务器ID,范围为1到232−1。”独特的”意味着每个ID必须不同于复制拓扑中任何其他源或副本所使用的其他ID。有关其他信息,请参见第17.1.6.2节“复制源选项和变量”,第17.1.6.3节“副本服务器选项和变量”.
如果服务器ID设置为0,将进行二进制日志记录,但是服务器ID为0的源将拒绝来自副本的任何连接,服务器ID为0的副本将拒绝连接到源。注意,尽管可以将服务器ID动态更改为非零值,但这样做并不能立即启动复制。您必须更改服务器ID,然后重新启动服务器以初始化副本。
有关更多信息,请参见第17.1.2.2节“设置副本配置”.
的默认或用户提供的服务器ID之外,MySQL服务器生成一个真正的UUIDserver_id
系统变量。这是一个全局只读变量server_uuid
.
的存在server_uuid
系统变量不改变设置唯一的要求server_id
值,作为准备和运行MySQL复制的一部分,如本节前面所述。
系统变量 | server_uuid |
---|---|
范围 | 全球 |
动态 | 没有 |
SET_VAR 提示应用 |
没有 |
类型 | 字符串 |
MySQL服务器启动时,自动获取一个UUID,如下所示:
的auto.cnf
文件的格式与用于my.cnf
或my.ini
文件。auto.cnf
只有一个(汽车)
包含单个server_uuid
设置与值;该文件的内容如下所示:
[汽车]server_uuid = 8 a94f357 - aab4 - 11 - df - 86 - ab - c80aa9429562
的auto.cnf
文件自动生成;不要尝试写入或修改此文件。
在使用MySQL复制时,源和副本知道彼此的uuid。的输出中可以看到副本的UUID的值显示副本|显示从主机
.一次启动|副本slave
的输出中,源的UUID值在副本上可用显示副本|的slave状态
.
发出一个停止|副本slave
或重置副本| slave
声明并不重置源的UUID,就像在副本上使用的一样。
服务器的server_uuid
在gtid中也用于起源于该服务器的事务。有关更多信息,请参见第17.1.3节,“使用全局事务标识符的复制”.
在启动时,如果复制I/O线程的源UUID等于它自己的UUID,则复制I/O线程会生成一个错误并中止——replicate-same-server-id
选项已设置。此外,如果满足以下条件之一,复制I/O线程将产生警告:
没有消息来源
server_uuid
的存在。源的
server_uuid
已经改变了,虽然没有将复制源更改为
|将master更改为
语句从未被执行过。