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复制的完整性和一致性。

相关推荐
码银24 分钟前
什么是逻辑外键?我们要怎么实现逻辑外键?
java·数据库·spring boot
GOTXX1 小时前
【CS创世SD NAND征文】小型夜灯为何需要存储芯片?从基础照明到智能存储的升级密码
数据库·科技·安全·芯片·储存
TDengine (老段)1 小时前
TDengine 中 TDgpt 的模型评估工具
大数据·数据库·机器学习·ai·时序数据库·tdengine·涛思数据
五月茶2 小时前
MySQL——黑马
数据库·mysql
一号IT男3 小时前
MySql MVCC的原理总结
数据库·mysql
我感觉。3 小时前
旅游mcp配置(1)
数据库
Badman3 小时前
Redis与DB的数据一致性问题梳理
数据库·redis·后端
荔枝吻3 小时前
【沉浸式解决问题】mysql-connector-python连接数据库:RuntimeError: Failed raising error.
数据库·python·mysql
一号IT男4 小时前
MySQL聚簇索引与非聚簇索引详解
数据库·mysql
苹果醋34 小时前
react_05create-react-app脚手架详细解析(export)
java·运维·spring boot·mysql·nginx