MST

星途 面试题库

面试题:MariaDB中GTID实现的基本原理是什么

请简要阐述MariaDB中GTID(全局事务标识符)实现的基本原理,包括GTID的组成结构以及在主从复制过程中是如何发挥作用的。
38.1万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

GTID基本原理

  1. 概念:GTID是一个全局唯一的事务标识符,在MariaDB中,每个事务在其生命周期内会被分配一个GTID,无论该事务在主库执行并传播到从库,还是直接在从库执行,GTID都能唯一标识它。

GTID组成结构

  1. 格式:GTID由两部分组成,格式为 server_uuid:transaction_id
    • server_uuid:是数据库实例在启动时生成的唯一标识符,在整个生命周期内保持不变,用于标识产生该事务的服务器。
    • transaction_id:是一个单调递增的数字,代表在该服务器上执行的事务的序列号,每执行一个新事务,该数字就会加1 。

在主从复制过程中的作用

  1. 主库操作:当主库上执行一个事务时,会为该事务生成一个GTID。在将事务写入二进制日志(binlog)时,GTID也会一同记录。例如,事务 T1 在主库执行,主库生成 GTID1 = server_uuid1:1,并将 GTID1T1 的操作记录到binlog。
  2. 从库获取:从库通过I/O线程连接主库,读取主库的binlog。从库获取到包含GTID的事务记录后,会将其写入自己的中继日志(relay log)。
  3. 从库回放:SQL线程从relay log中读取事务记录,根据GTID判断该事务是否已经执行过。如果从库中没有记录该GTID,则执行该事务,并记录该GTID到自己的 gtid_executed 集合中。例如,从库读取到 GTID1,发现 gtid_executed 中没有 GTID1,则执行事务 T1 并将 GTID1 加入 gtid_executed。这种方式确保了从库不会重复执行已经执行过的事务,提高了主从复制的可靠性和一致性。