600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > MySQL: GTID简介 gtid_executed和gtid_purged概念

MySQL: GTID简介 gtid_executed和gtid_purged概念

时间:2022-11-13 06:15:44

相关推荐

MySQL: GTID简介 gtid_executed和gtid_purged概念

GTID:

全称:global transaction identifier

何时产生:

当一个事务提交时,就会分配一个GTID(前提是事务有写入到binlog),GTID单调递增且连续。

GTID格式:

GTID = source_id:transaction_id

其中 source_id 一般指 source 的 server_uuid , 示例:

3E11FA47-71CA-11E1-9E33-C80AA9429562:23

关于server_uuid,可以参考文章 /qingsong3333/article/details/120625407

gtid_executed:

如何查看已经执行过的GTID?

系统表 mysql.gtid_executed 存放了所有执行过的GTID(在活动的binlog中的除外),但是由于不包含活动的binlog当中的GTID,因此需要查看精确值时,可以查看 global variable gtid_executed 的值,这个变量的值是准确的(或者 show master status )。

同一个GTID的事务不会在一个Server上执行两次,可以保证数据一致性。

GTID SET

GTID SET是指多个GTID的集合,示例如下:

2174B383-5441-11E8-B90A-C80AA9429562:1-3, 24DA167-0C0C-11E8-8442-00059A3C7B00:1-19

gtid_executed 和 gtid_purged 这两个系统变量 都是 GTID SET

gtid_purged:

这个一个 GTID SET,包含了所有已经提交过的,但是不在 binlog 当中的 GTID ,它是 gtid_executed 的子集。以下几种 GTID 都会添加到 gtid_purged 当中:

1. 未开启binlog的从库上提交过的GTID2. 已经被 "purge" 掉的 binlog 当中的 GTID 。(当发出 purge binary log 命令之后,如果被 purge的binlog中包含有GTID,那么查看 gtid_purged 变量值的时候,就会看到该变量值发生了变化)3. 使用 'set global gtid_purged= "xxxx" ' 添加的 GTID

什么时候需要设置 gtid_purged 变量?

人为设置 gtid_purged 的目地是为了告诉服务器,即使它们不在 binlog 中,这些 GTID 已经 被applied过了,不能/不需要再做重做。一个必须人为设置 gtid_purged 的场景见文章

参考资料:/doc/refman/5.7/en/replication-gtids-concepts.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。