云SQL数据库导入导出问题

14
当我从一个实例(第二代)导出SQL数据库并将其导入到另一个SQL实例时,出现以下错误: ERROR 1839 (HY000) 在第24行:
@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON.

根据 https://superuser.com/questions/906843/import-mysql-data-failed-with-error-1839 的说法,这个问题可以通过使用SQL转储来解决。
--set-gtid-purged=OFF

但是gcloud sql instances export命令不支持此功能。有没有其他解决方法?
4个回答

20

这是一个不错的选择,不需要重新创建转储文件(一个小时十分钟),也不需要手动编辑一个200G的转储文件。 - UncaAlby
只需运行这个命令,RESET MASTER; 在你想要导入的地方。就这样。它解决了我的问题。 - Selim Raza

8

您是否尝试以下两种方法?

选项1)从sql转储文件中删除此行,并将其导入到数据库中?
SET @@GLOBAL.GTID_PURGED='1b313522-1ee5-11e6-9c51-0242ac110003:1-2020';

选项2)关闭实例上的二进制日志记录,然后进行导出?

参考文章


我尝试了选项1,它可以工作,但问题是我将转储以gz格式导出到云存储。如果我想编辑文件,我需要下载它,解压缩它,编辑行,再压缩并重新上传。有更简单的方法吗? 选项2不是首选,因为我们不想禁用复制。 - bjorndv
太棒了,效果非常好!非常感谢你! - undefined

3

你可以在使用的数据库上运行reset master来解决这个问题,对我有用。


1
这个可以运行。但是如果您能添加一下这个查询实际上是做什么的,我会非常感激。 - Jithesh Kt
@JitheshKt 我也是这样的 - MimoudiX

1
我们发现以下错误:
ERROR 3546 (HY000) 在第24行:@@GLOBAL.GTID_PURGED无法更改:添加的gtid集不得与@@GLOBAL.GTID_EXECUTED重叠。
我们在登录MySQL连接后从命令行导入了数据库,然后使用以下命令进行导入:
mysql> SOURCE stagingdump.sql
我不是说这是最好的方法,但我用这种方式解决了我的错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接