以下部分包含关于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
File的格式类似于my.cnf
或my.ini
文件。auto.cnf
只有一个(汽车)
包含单个server_uuid
设置和值;该文件的内容如下所示:
[汽车]server_uuid = 8 a94f357 - aab4 - 11 - df - 86 - ab - c80aa9429562
的auto.cnf
文件自动生成;不要尝试写入或修改此文件。
当使用MySQL复制时,源和副本知道彼此的uuid。的输出中可以看到副本的UUID值显示副本|显示从主机
.一次启动副本|从站
的输出中,源UUID的值在副本上可用显示副本|从站状态
.
服务器的server_uuid
在gtid中也用于起源于该服务器的事务。有关更多信息,请参见第17.1.3节,“使用全局事务标识符的复制”.
在启动时,如果复制I/O线程的源UUID等于它自己的UUID,则会生成一个错误并中止——replicate-same-server-id
选项已设置。此外,如果下列情况之一为真,复制I/O线程将生成一个警告:
没有预料中的消息来源
server_uuid
的存在。源的
server_uuid
已经改变了,虽然没有将复制源更改为
|将master更改为
语句从未被执行过。