深入理解MySQL主从原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.3 server_uuid的生成

在GTID中包含了一个server_uuid。server_uuid实际上是一个32字节+1(/0)字节的字符串。MySQL启动时会调用init_server_auto_options函数读取auto.cnf文件。如果auto.cnf文件丢失,则会调用generate_server_uuid函数生成一个新的server_uuid,但是需要注意,这样GTID必然会发生改变。

在generate_server_uuid函数中可以看到,server_uuid至少和下面3部分有关。

(1)数据库的启动时间。

(2)线程的LWP ID,其中,LWP是轻量级进程(Light-Weight Process)的简称,我们在5.1节会进行描述。

(3)一个随机的内存地址。

下面是部分代码:

server_uuid的内部表示是binary_log::Uuid,核心是一个16字节的内存空间,在GTID相关的Event中会包含这个信息,2.3节会进行详细解析。