14

我使用亚马逊网络服务,我已经设置了 EC2 和 RDS 并安装了 apache、php、mysql、phpmyadmin。

我可以导入小的 sql 文件(我还设置了 worpdress 并为此导入了一个 sql db)但是当我尝试使用 putty 导入一个 200mg 的 sql 文件时,我得到了

ERROR 2006 (HY000) at line 186: MySQL server has gone away'

在做了一些研究之后,似乎增加数据库参数组中的max_allowed_pa ​​cket 、wait_timeoutnet_read_timeout会有所帮助,但它没有(我在进行更改后确实重新启动,我还使用 RightScale 仪表板将它们设置为最大允许值)。

还有什么我应该注意的可能导致这种情况的吗?

我也试过 bigdump.php 没有运气。

我想很多人使用 aws 上传大型 mysql 数据库,所以这有点让我发疯。

4

3 回答 3

48

我有同样的问题:

  1. 转到您的 RDS 仪表板并单击Parameter Groups
  2. 单击Create DB Parameter Group,将其命名为“LargeImport”(确保您选择的 DB Parameter Group Family 与您的实例版本匹配)并编辑参数。
  3. 增加“LargeImport”上的“ max_allowed_pa ​​cket”以适应您的导入大小(有效值为 1024-1073741824)。
  4. 增加“ wait_timeout ”参数以适应您的导入大小。(有效值为 1-31536000 秒)。
  5. 保存您的更改。
  6. 单击左侧列中的实例并选择您的实例
  7. 单击实例操作并选择修改
  8. 将Parameter Group更改为新的“LargeImport”组,然后单击Continue
  9. 单击“修改数据库实例”。
  10. 更改完成后,再次单击实例操作并重新启动您的实例。

一旦您的实例重新启动,您应该能够进行更大的 sql 导入。

完成导入后,将实例参数组切换回默认参数组并重新启动。

希望这可以帮助。

于 2014-05-23T14:38:35.767 回答
4

接受的答案对我不起作用,但将 max_allowed_pa​​cket 更改为较大的值(即 32000000 =~ 32MB)并重新启动。

于 2013-02-27T08:46:57.710 回答
0

根据MySQL 文档,这通常与超时有关。虽然很难诊断这一点,但我可以想到一种可能的解决方法:在与您的 RDS 服务器相同的区域中启动一个 EC2 实例(或使用您已经拥有的现有实例 - 微型实例或小型实例即可) ,例如使用 SFTP 上传您的大型 SQL 转储,安装 MySQL 客户端库并从那里上传您的文件。这将确保您的 mysql 客户端和 RDS 实例之间的导入速度更快。

于 2012-09-21T07:10:19.800 回答