MySQL报错:ERROR 3546 (HY000): @@GLOBAL.GTID_PURGED cannot be changed: the new value must be a superset

解决方案

今天在set gtid的时候报了下面的错误:

sql>set global gtid_purged="dd3ce11f-30f4-11ea-86b2-42010a8e0014:1-1211761271";
ERROR 3546 (HY000): @@GLOBAL.GTID_PURGED cannot be changed: the new value must be a superset of the old value

其实这个报错很简单,意思就是我们set的值必须得是当前机器上面gtid_purged的子集,及我们手动设置的set应该要小于等于当前机器上面的gtid_purged。
我们自己的机器上面的可以通过下面的sql查看:

[(none)]>show variables like 'gtid%';
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name                    | Value                                                                                                                                                                                                                                                                                                                                                                                          |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| gtid_executed                    | dd3ce11f-30f4-11ea-86b2-42010a8e0014:1-121176111 |
| gtid_executed_compression_period | 1000                                                                                                                                                                                                                                                                                                                                                                                           |
| gtid_mode                        | ON                                                                                                                                                                                                                                                                                                                                                                                             |
| gtid_next                        | AUTOMATIC                                                                                                                                                                                                                                                                                                                                                                                      |
| gtid_owned                       |                                                                                                                                                                                                                                                                                                                                                                                                |
| gtid_purged                      | dd3ce11f-30f4-11ea-86b2-42010a8e0014:1-1211761111 |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

可以看到我们设置的集合是大于这个的,所以报错。
如何解决,分情况而言。
1.如果是搭建从库的话:
可以先执行一句reset master在进行set就不会报错。
2.如果是修复数据的话:
一定要确定好自己的集合完全包含当前机器的gtid_purged集合的时候再reset master

你可能感兴趣的:(MySQL)