MySQL purged gtid是如何生成和维护的

目录

  • [1. GTID的基本概念](#1. GTID的基本概念)
  • [2. GTID的生成](#2. GTID的生成)
  • [3. GTID的清除](#3. GTID的清除)
    • [3.1 手动清除二进制日志](#3.1 手动清除二进制日志)
    • [3.2 自动清除二进制日志](#3.2 自动清除二进制日志)
    • [3.3 重置主库](#3.3 重置主库)

在MySQL中,gtid_purged表示已清除的GTID集合。

gtid_purged的生成和维护过程如下:

1. GTID的基本概念

GTID(Global Transaction Identifier)是一个全局唯一的事务标识符,用于标识MySQL中的每个事务。GTID由服务器UUID和事务ID组成,例如:3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5。

2. GTID的生成

当一个事务在主库上提交时,MySQL会生成一个GTID并将其记录在二进制日志中。这个GTID会被复制到从库,从库在执行该事务时也会记录这个GTID。

3. GTID的清除

3.1 手动清除二进制日志

当执行PURGE BINARY LOGS命令时,MySQL会删除指定的二进制日志文件,并将这些文件中包含的GTID添加到gtid_purged中。

sql 复制代码
PURGE BINARY LOGS TO 'binlog.000010';

3.2 自动清除二进制日志

如果配置了expire_logs_days或binlog_expire_logs_seconds,MySQL会定期清除过期的二进制日志,并将这些日志中包含的GTID添加到gtid_purged中。

sql 复制代码
SET GLOBAL expire_logs_days = 7;

3.3 重置主库

当执行RESET MASTER命令时,MySQL会删除所有的二进制日志文件,并将这些文件中包含的GTID添加到gtid_purged中。

sql 复制代码
RESET MASTER;

示例

以下是一个示例,展示如何手动清除二进制日志并查看gtid_purged的更新:

查看当前二进制日志和GTID状态:

sql 复制代码
SHOW BINARY LOGS;
SHOW VARIABLES LIKE 'gtid_purged';

手动清除二进制日志:

sql 复制代码
PURGE BINARY LOGS TO 'binlog.000010';

再次查看gtid_purged的值:

sql 复制代码
SHOW VARIABLES LIKE 'gtid_purged';

通过这些步骤,MySQL能够生成和维护gtid_purged,确保GTID复制的完整性和一致性。

相关推荐
Francek Chen1 小时前
【大数据存储与管理】实验3:熟悉常用的HBase操作
大数据·数据库·分布式·hbase
ffqws_1 小时前
Spring @Transactional 注解详解:从入门到避坑
java·数据库·后端·spring
努力努力再努力wz1 小时前
【MySQL 进阶系列】C/C++ 如何通过客户端库访问 MySQL?从连接原理到 API 调用流程详解(附完整demo代码)
服务器·c语言·数据结构·数据库·c++·b树·mysql
七夜zippoe2 小时前
DolphinDB分布式表:创建与管理
数据库·分布式·维度·dolphindb·数据写入
何中应2 小时前
Redis集群搭建
数据库·redis·缓存
KmSH8umpK2 小时前
Redis分布式锁进阶第十七篇
数据库·redis·分布式
重生之小比特3 小时前
【MySQL 数据库】表的操作
数据库·mysql
雷工笔记4 小时前
MES 系统 设备保养管理模块详细设计方案
运维·数据库
晚风_END6 小时前
Linux|操作系统|zfs文件系统的使用详解
linux·运维·服务器·数据库·postgresql·性能优化·宽度优先
晚风_END12 小时前
Linux|操作系统|最新版openzfs编译记录
linux·运维·服务器·数据库·spring·中间件·个人开发