关键词

详解MySQL的GTID_PURGED()函数:获取已经清理过的 GTID

GTID_PURGED()函数是MySQL中的一个用于查看或操作GTID(全局事务标识符)集合的函数。GTID是MySQL 5.6及以上版本中默认启用的一个特性,用于跟踪分布式事务中的数据变更,从而实现更快捷的复制、备份和故障恢复。

GTID_PURGED()函数主要用于查询或修改MySQL实例中已经被标识为“已经应用”的GTID集合。当进行主从复制或主主复制时,MySQL会记录所有已经发送的GTID,并在从库上记录已经应用的GTID,以进行数据复制。GTID_PURGED()函数可以查看已经应用的GTID集合,从而帮助我们更好地管理GTID。

GTID_PURGED()函数的使用方法:

1. 查询已经应用的GTID集合

使用下面的命令可以查询当前MySQL实例已经应用的GTID集合:

SELECT @@GLOBAL.gtid_executed;

也可以使用下面的命令查询当前MySQL实例中已经应用的,但是尚未包括在gtid_executed变量中的GTID:

SELECT @@GLOBAL.gtid_purged;

如果当前MySQL实例中没有配置GTID,则会返回NULL值。

2. 修改已经应用的GTID集合

在一些特殊的情况下,我们可能需要手动修改GTID集合,例如从库的数据复制出现问题,需要重新定义GTID集合以解决复制问题。可以通过修改MySQL配置文件/etc/my.cnf来定义gtid_purged变量,配置如下:

[mysqld]
gtid_purged = "GTID集合以逗号分隔的字符串"

其中,“GTID集合以逗号分隔的字符串”表示需要手动定义的GTID集合。在修改后,需要重启MySQL服务才能生效。

实例1:

假设当前MySQL实例已经应用的GTID集合为“e844b7d8-fc44-11eb-bbec-0242ac120005:1-10”,需要手动修改成“e844b7d8-fc44-11eb-bbec-0242ac120005:1-8”:
首先,关闭MySQL服务:

sudo systemctl stop mysql

然后,在/etc/my.cnf中添加下面的内容:

[mysqld]
gtid_purged=e844b7d8-fc44-11eb-bbec-0242ac120005:1-8

保存修改后,启动MySQL服务:

sudo systemctl start mysql

最后,使用如下命令查询修改后的GTID集合:

SELECT @@GLOBAL.gtid_purged;

实例2:

假设我们需要将GTID集合从一个MySQL从库复制到另一个MySQL从库。可以使用如下命令来实现:
在原有MySQL从库中查询已经应用的GTID集合:

SELECT @@GLOBAL.gtid_executed;

使用查询结果,在另一个MySQL从库中执行如下命令:

SET @@GLOBAL.gtid_purged='查询到的GTID集合';

这样就可以将GTID集合从一个MySQL从库复制到另一个MySQL从库了。需要注意的是,被复制的MySQL从库必须先停止服务,修改完GTID集合后再启动服务。

本文链接:http://task.lmcjl.com/news/18364.html

展开阅读全文