我在笔记本电脑上生成一个.sql文件,其中包含大约1,100万个插入语句到几个表中。
在本地我运行一个MySQL数据库,我导入了这个文件。这需要一段时间,但它成功没有任何问题。本地MySQL版本是:
mysql Ver 14.14 Distrib 5.6.16, for osx10.7 (x86_64) using EditLine wrapper
我想将此文件导入Google Cloud SQL实例。为此,我首先gzip .sql文件并将其上传到Google云端存储中的存储桶。
然后我创建一个D0按使用付费的实例(功能最弱/最便宜)。我点击“导入”#39;并在云存储上输入文件的名称。
导入开始,但过了一会儿(大约一天)导入失败,说明:An unknown error occurred
。
我使用MySQL 5.5和实验5.6实例尝试了这一点,两者都在不同的插入时失败。 (我可以看到最新成功的插页是什么)。
我的问题是,我无法找出MySQL认为的问题。
如何让Google开发者控制台向我显示日志?我尝试了Google API页面,其中包含一个' Logs'标签,但它给了我An error has occurred. Please retry later.
也许Google Cloud SQL对我的本地MySQL没有的插入语句有一些限制?
其中一个字段是MEDIUMTEXT,我相信它可能大于65.536字节。
感谢任何建议。
----------更新-----------
我与cloud-sql团队邮寄,他们确认问题是导入超时了。 实际上,24小时是导入对Cloud SQL的最长时间。
解决方案是:使用更强大的实例进行导入(并使用异步复制),或者将.sql拆分为多个部分。
另一种方法是每个insert语句使用几个值,只需确保该行不超过4MB。这就是max_allowed_packet在cloud sql上的价值。它大大加快了插入速度。
事实上,这使得D0实例可以在几个小时内导入文件,因此我不需要将其推向更强大的文件。