• 运维特工,战胜心魔!!
  • 有些事情其实没有那么难,只是我们感觉难,走出第一步!
  • 你所浪费的今天,是昨天死去的人奢望的明天!!!
  • 欢迎访问 unixfbi.com 运维特工社区http://unixfbi.com/
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 运维特工:http://www.unixfbi.com
  • 人生没有白走的路,每一步都算数!!
  • 空杯心态,沉淀自己!

解决@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

MySQL unixfbi 9个月前 (10-05) 3356次浏览 已收录 0个评论 扫描二维码

问题描述

# mysql -h192.168.199.199 -uadmin  -pXXX < db-2018-09-05-0220.sql
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

问题原因

从上面的报错内容来看,出现错误是在备份文件的 24 行中,那么我们看看 24 行是什么内容

# sed -n '24p' db-2018-09-05-0220.sql 
SET @@GLOBAL.GTID_PURGED='9110b22b-ad94-11e8-85a4-00163e0856f7:1-74067';

哦,是因为要设置GLOBAL.GTID_PURGED这个值时报错了,原因是GLOBAL.GTID_EXECUTED只有这个值为空时才能设置GLOBAL.GTID_PURGED值。说明数据库实例中这个值不为空。
我们通过实例看看这个值,发现这个值确实不为空。

root@localhost:mysql3306.sock [mas]> show global variables like '%GTID%';
+----------------------------------+--------------------------------------------------------------------------------------+
| Variable_name                    | Value                                                                                |
+----------------------------------+--------------------------------------------------------------------------------------+
| binlog_gtid_simple_recovery      | ON                                                                                   |
| enforce_gtid_consistency         | ON                                                                                   |
| gtid_executed                    | 9110b22b-ad94-11e8-85a4-00163e0856f7:1-74029,
a4a66d60-b02e-11e8-9a61-00e04c976859:1 |
| gtid_executed_compression_period | 1000                                                                                 |
| gtid_mode                        | ON                                                                                   |
| gtid_owned                       |                                                                                      |
| gtid_purged                      | 9110b22b-ad94-11e8-85a4-00163e0856f7:1-74029                                         |
| session_track_gtids              | OFF                                                                                  |
+----------------------------------+--------------------------------------------------------------------------------------+
8 rows in set (0.00 sec)

解决方法

通过以上分析,我们知道了问题产生的原因,那么可以给出解决方法了。

方法一:
既然是设置SET @@GLOBAL.GTID_PURGED='9110b22b-ad94-11e8-85a4-00163e0856f7:1-74067';时报错,那么备份的时候不输出这个值不就行了吗?是的,可以这么做。
备份时需要设置--set-gtid-purged=off 参数,表示备份时不要带SET @@GLOBAL.GTID_PURGED='9110b22b-ad94-11e8-85a4-00163e0856f7:1-74067';这行信息。

# mysqldump -uroot -punixfbi --routines --single-transaction --master-data=2 --set-gtid-purged=off  -B db2 > db2.sql

解决@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

发现没有了SET @@GLOBAL.GTID_PURGED='xxxxxx';这行内容。
这样备份的文件导入时就不会出现上面的报错了。可以放心的导入了。

方法二
通过上面的报错信息,
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
告知设置@@GLOBAL.GTID_PURGED时,数据实例中@@GLOBAL.GTID_EXECUTED这个值不为空。那么我们让这个值为空就行了。
怎么才能让@@GLOBAL.GTID_EXECUTED值为空呢?

myql > reset master;
root@localhost:mysql3306.sock [(none)]> reset master;
Query OK, 0 rows affected (0.60 sec)

root@localhost:mysql3306.sock [(none)]> show global variables like '%GTID%';
+----------------------------------+-------+
| Variable_name                    | Value |
+----------------------------------+-------+
| binlog_gtid_simple_recovery      | ON    |
| enforce_gtid_consistency         | ON    |
| gtid_executed                    |       |
| gtid_executed_compression_period | 1000  |
| gtid_mode                        | ON    |
| gtid_owned                       |       |
| gtid_purged                      |       |
| session_track_gtids              | OFF   |
+----------------------------------+-------+
8 rows in set (0.00 sec)

这样导入带有SET @@GLOBAL.GTID_PURGED='xxx';信息时就不会报错了。


UnixFBI 运维特工 , 版权所有丨如未注明 , 均为原创丨 转载请务必注明原文链接http://www.unixfbi.com/578.html
喜欢 (0)
[支付宝]
分享 (0)
unixfbi
关于作者:
运维工程师一枚,做有价值的事情!
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址