前置知识: MySQL

GTID

1 minAdvanced2026/6/14

MySQL全局事务标识符GTID:原理、配置、基于GTID的复制与故障切换

1. GTID 概述

全局事务标识符(Global Transaction Identifier,GTID)为每个事务分配唯一标识,简化复制管理。

1.1 GTID 格式

GTID=server_uuid:transaction_id\text{GTID} = \text{server\_uuid}:\text{transaction\_id}
3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5

2. 配置

[mysqld]
gtid-mode = ON
enforce-gtid-consistency = ON
log-bin = mysql-bin
binlog-format = ROW
server-id = 1

3. 基于GTID的复制

-- 从库配置(无需指定 binlog 位置)
CHANGE MASTER TO
    MASTER_HOST = 'master-ip',
    MASTER_USER = 'repl',
    MASTER_PASSWORD = 'password',
    MASTER_AUTO_POSITION = 1;  -- 使用 GTID 自动定位

START SLAVE;

4. GTID 运维

-- 查看已执行的 GTID
SHOW MASTER STATUS;
-- Executed_Gtid_Set: 3E11FA47-71CA-11E1-9E33-C80AA9429562:1-100

-- 查看从库已执行的 GTID
SHOW SLAVE STATUS\G
-- Retrieved_Gtid_Set: ...
-- Executed_Gtid_Set: ...

-- 跳过有问题的 GTID 事务
SET GTID_NEXT = '3E11FA47-71CA-11E1-9E33-C80AA9429562:101';
BEGIN;
COMMIT;
SET GTID_NEXT = AUTOMATIC;
START SLAVE;

5. GTID 优势

  • 无需手动定位 binlog 位置
  • 故障切换更简单
  • 可验证主从数据一致性
  • 支持多源复制