第1节:GTID的基本概念

一、GTID的作用

GTID特性是5.6加入的一个强大的特性,全称是Global Transaction Identifier。MySQL会为每一个DML/DDL操作增加一个唯一标记叫做GTID,这个标记在整个复制环境中都是唯一的。主从环境中主库的DUMP线程可以直接通过GTID定位到需要发送的binary log位置,而不再需要指定binary log的文件名和位置,因此切换极为方便。关于DUMP线程是如何通过GTID定位到binary log位置的,我们将在第17节进行讨论。

二、GTID的基本表示

为了严谨,我会尽量使用源码的术语进行解释。后面我们也会沿用这些术语。

  • GTID:单个GTID,比如‘24985463-a536-11e8-a30c-5254008138e4:5’。对应源码中的类结构Gtid。注意源码中用sid代表前面的server_uuid,gno则用来表示后面的序号。
  • gno:单个GTID后面的序号,比如上面的GTID其gno就是5。这个gno实际上从全局计数器next_free_gno中获取的。
  • GTID SET:一个GTID的集合,可以包含多个server_uuid,比如我们常见的execute_gtid、gtid_purged就是一个GTID SET。类似‘24985463-a536-11e8-a30c-5254008138e4:1-5:7-10’就是一个GTID SET。对应源码中的类结构Gtid_set,其中还包含一个sid_map用于表示多个server_uuid。
  • GTID SET Interval:GTID SET中某个server_uuid可能包含多个区间比如‘1-5:7-10’,比如这里就有2个GTID SET Interval分别是‘1-5’和‘7-10’。当然通常只有一个GTID SET Interval如‘1-10’。对应源码中的结构体Gtid_set::Interval。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥2.00 继续阅读

友情链接更多精彩内容