mysqldump --set-gtid-purged参数详解

2023-12-13 10:47:30

?在开启了GTID模式的数据库,使用mysqldump进行部分数据备份的时候,经常会遇到如下警告

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. 

该警告的意思为:

在开启了GTID模式的数据库,如果你对数据库的部分数据进行了备份,如果不加参数--set-gtid-purged=OFF,该备份中也会包含该数据库的所有GTID。

不添加--set-gtid-purged=OFF命令行参数 ,备份文件的头部会包含以下内容:

?

系统变量( gtid_purged) 的全局值 @@GLOBAL.gtid_purged是一个 GTID 集合,包含已提交但不存在于binlog中的所有?GTID 组成。 gtid_purged是 gtid_executed的子集 。GTID 的以下类别位于 ???????gtid_purged:

  • 未开启binlog的从库提交过事务的GTID
  • 写入二进制日志文件(现已被清除)的事务的 GTID。
  • 由语句SET @@GLOBAL.gtid_purged 显式添加到集合中的 GTID .

发出 RESET MASTER 会导致gtid_purged 的值重置为空字符串。

什么时候需要手动设置 gtid_purged变量?

可以手动设置 gtid_purged 的值,以便在服务器上记录某个 GTID 集中的事务已被应用,尽管它们不存在于服务器上的任何二进制日志中。此操作的一个示例是当正在恢复服务器上一个或多个数据库的备份,但您没有包含服务器上事务的相关二进制日志时。

在 MySQL 5.7 中,仅当 gtid_executed 为空字符串时才可以更新 gtid_purged 的值 。因此gtid_purged为空字符串。当复制之前尚未开始,或者复制之前未使用 GTID 时,就会出现这种情况

文章来源:https://blog.csdn.net/weixin_48154829/article/details/134944443
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。