MySQL purged gtid是如何生成和维护的
目录
- 1. GTID的基本概念
- 2. GTID的生成
- 3. GTID的清除
- 3.1 手动清除二进制日志
- 3.2 自动清除二进制日志
- 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中。
PURGE BINARY LOGS TO 'binlog.000010';
3.2 自动清除二进制日志
如果配置了expire_logs_days或binlog_expire_logs_seconds,MySQL会定期清除过期的二进制日志,并将这些日志中包含的GTID添加到gtid_purged中。
SET GLOBAL expire_logs_days = 7;
3.3 重置主库
当执行RESET MASTER命令时,MySQL会删除所有的二进制日志文件,并将这些文件中包含的GTID添加到gtid_purged中。
RESET MASTER;
示例
以下是一个示例,展示如何手动清除二进制日志并查看gtid_purged的更新:
查看当前二进制日志和GTID状态:
SHOW BINARY LOGS;
SHOW VARIABLES LIKE 'gtid_purged';
手动清除二进制日志:
PURGE BINARY LOGS TO 'binlog.000010';
再次查看gtid_purged的值:
SHOW VARIABLES LIKE 'gtid_purged';
通过这些步骤,MySQL能够生成和维护gtid_purged,确保GTID复制的完整性和一致性。