mysql gtid唯一性问题

Posted python真好用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql gtid唯一性问题相关的知识,希望对你有一定的参考价值。

什么是GTID:从MySQL 5.6.5 开始新增了一种基于 GTID 的复制方式。通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性,故障恢复以及容错能力。

背景:在A机器上mysqldump导出了一份数据文件full1.sql
将full1.sql放到B机器上运行时发生了一下报错。

原因:1.mysqldump导出的时候顺便将A机器的gtid也导出来了,这个值是唯一的,B机器上已经有了gtid,所以导入时会报错

[root@mysql-6-58 backup]# mysql -uroot -p'xxxxx' < full1.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

解决办法:

1.mysqldump时添加参数–set-gtid-purged=off参数,避免将gtid信息导出
2.数据库里reset mater,重新将GTID_EXECUTED值置空
3.在导出的文件中将以下内容删掉(亲测有效)

@@GLOBAL.GTID_PURGED='7706e90e-c8c2-11eb-a39f-005056ae51f6:5-9,
d3672032-c801-11eb-9a70-005056aeb414:1-14'; ```

以上是关于mysql gtid唯一性问题的主要内容,如果未能解决你的问题,请参考以下文章

mysql gtid唯一性问题

Mysql5.7基于GTID的半同步复制

MySQl新特性 GTID

MySQL主从复制之GTID模式介绍

MySQL5.7配置GTID主从---GTID介绍

MySQL GTID