MySQL GTID 主从复制与数据迁移

一、基于 GTID 主从复制

1.1 什么是 GTID?

GTID(Global Transaction Identifier,全局事务标识符)是 MySQL 5.6+ 引入的事务唯一标识机制,MySQL 8.0 中已成为默认推荐的复制模式。

GTID 格式:source_id:transaction_id

示例:3E11FA47-71CA-11E1-9E33-C80AA9429562:1-523
      ├─────────────┬─────────────┤
      │   服务器UUID │  事务序列号  │

1.2 传统复制 vs GTID 复制

对比项传统基于 binlog 位置基于 GTID 复制
定位方式File + PositionGTID
主从切换需手动计算位置,易出错自动定位,更简单
事务一致性依赖人工判断自动跳过已执行事务
并行复制配置复杂天然支持并行
故障恢复需人工比对 position自动识别 GTID 集合

1.3 GTID 核心特性

GTID 的优势:

1.4 GTID 工作原理(背诵)

核心:主库计算 GTID 差集,推送差集 binlog 给从库。

流程:

① 从库 B 指定主库 A,建立连接

② 从库 B 把自己的 GTID 集合 y 发给主库 A

③ 主库 A 计算差集(x 中有但 y 中没有的 GTID),如 x=1~100,y=1~90,差集=91~100

④ 主库 A 找到第一个不在 y 中的事务 GTID(91)

⑤ 从 GTID=91 开始按顺序取 binlog 发给 B

⑥ 从库 IO 线程生成 relay log,SQL 线程解析并执行

GTID vs 位点同步区别: 位点同步需人工指定位置;GTID 由主库自动计算,对运维更友好。

1.5 GTID 配置与实现

1.5.1 环境(一主两从)

IP主机名角色
192.168.50.213node1master
192.168.50.214node2slave
192.168.50.215node3slave

1.5.2 主机准备

# 时间同步
vi /etc/chrony.conf
# 添加阿里云 NTP 服务器
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst

# 其他准备:配置IP/主机名、/etc/hosts、关闭防火墙和SELinux、安装rsync

命令作用:

执行结果:

关键参数:


**注意事项:**

注意事项:







| 模式 | 说明 | 是否停机 |
|---|---|---|
| 离线迁移 | 停机后迁移 | 停机 |
| 在线迁移 | 不停机迁移 | 不停机 |
| 混合迁移 | 全量离线 + 增量在线 | 短暂停机 |





**相关特性:**



**案例:创建表并插入数据**

);

职责:

职责: