Mysql GTID

从5.6 mysql引入了gtid的概念,但是到8的版本,默认gtid是关闭,如果要打开gtid需要做如下操作:

GTID_MODE = ON

同时 设置:ENFORCE_GTID_CONSISTENCY = ON,

否则会报错:2016-11-29T07:39:35.265167Z 0 [ERROR] GTID_MODE = ON requires ENFORCE_GTID_CONSISTENCY = ON. 从而导致数据库无法启动;在官方文档当中gtid的组成结构为:

GTID = source_id:transaction_id

其中 source_id 是mysql server id,实质它的值和 server_uuid 是一样的;做个简单的测试:

[HuSi@HuoSi]mysql8 $ bin/mysql -uroot -proot -e "show variables like '%uuid%'"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| server_uuid   | 300e39aa-7e2c-11e6-a991-22aaeca26514 |
+---------------+--------------------------------------+

在来看看binlog 中记录的值:

#161129 15:52:48 server id 8  end_log_pos 219 CRC32 0x186fb5bf 	GTID	last_committed=0	sequence_number=1
SET @@SESSION.GTID_NEXT= '300e39aa-7e2c-11e6-a991-22aaeca26514:1'/*!*/;

可以看到 source_id 和 uuid 是相同的,需要注意uuid 本身的值是可以更改的;

这里有这样一个场景假如:1、此时uuid为 a,2、修改为b,3、再次修改为a,会响应数据库吗?

发表评论

电子邮件地址不会被公开。 必填项已用*标注