迁移问题:MS SQL> MySQL:插入缓冲区内存

时间:2014-07-01 01:56:19

标签: mysql sql migration workbench

我在MySQL工作台上使用内置的迁移工具时遇到了问题。

我正在将一个非常大的数据库从MS SQL 2014迁移到MySQL。

MS SQL服务器本地部署在我的(Windows 8.1)桌面上,MySQL服务器在我的网络上运行在Ubuntu服务器之上。

我在最终"批量转移"上收到以下一系列错误移民阶段。

`VHR_AGE`.`FlxTable`:Copying 33 columns of 311 rows from table [VHR_AGE].[dbo].[FlxTable]
ERROR: `VHR_AGE`.`FlxTable`:Not enough memory to allocate insert buffer of size 1073741824
`VHR_AGE`.`FlxTable`:Finished copying 0 rows in 0m00s

表的架构迁移得很好,问题仅限于数据本身的传输。

如果您希望看到有任何特定变量来帮助诊断问题,请直接询问,我会及时提供。

对此的任何帮助都会很棒,所有在线资源都是破产。

编辑: 我甚至不确定它的MS SQL或MySQL是否抛出了大小错误......

6 个答案:

答案 0 :(得分:2)

由于这个已经超过一年了,你可能已经解决了这个问题,但也许其他人(比如我)有同样的问题,所以我想添加我的解决方案:

在一些MySQL论坛中,我发现一个人发布了一个公式,在计算出我的服务器和我的系统之后,我发现,我试图使用2 GB太多的RAM系统没有。这是它,我希望它可以帮助某人。

RAM = innodb_pool_buffer_size + key_buffer_size + 
   ( (read_buffer_size + sort_buffer_size + read_rnd_buffer_size + join_buffer_size)
         * max_connection )

答案 1 :(得分:0)

从它的外观来看,错误在MySQL中。尝试调整MySQL服务器的 bulk_insert_buffer_size 参数。

答案 2 :(得分:0)

这看起来像托管MYSQL数据库的任何服务器的内存问题。看起来您没有1GB内存可以一次性插入新数据(在之前的响应中,您表示您已经更改了 bulk_insert_buffer_size 参数)。你可以:

  • 关闭一些应用程序,看看它是否释放了足够的空间。
  • 将导出的数据分成较小的块并以较小的增量插入(即在MS SQL服务器上创建视图或其他内容)
  • 更进一步,一次插入一行(这可能非常耗时)

答案 3 :(得分:0)

您可能需要查看this。这个开发人员使用一个名为Access to MYSQL的程序迁移数据,看起来很有希望。

答案 4 :(得分:0)

我建议您使用Talend data integration工具。您可以轻松地创建作业地图,然后开始工作。它会处理批量大小和东西。

我有一个巨大的MSSQL数据库,我迁移到MySQL它做得很好。与MSSQL相比,我甚至在MySQL中进行了一些结构更改。它有一个很好的GUI,您只需通过WYSIWYG映射列。它建立在Eclipse之上,所以如果你在使用它之前就已经熟悉了它。

答案 5 :(得分:0)

我长时间摆弄这个问题,终于找到了解决方案。这里的错误消息非常模糊。您不需要为系统添加更多内存,只需减小数据包大小即可。发生此错误是因为mysql尝试形成更高数量的包并且保持失败。

错误讯息: 没有足够的内存来分配大小为1073741824的插入缓冲区

如果你只是减少缓冲区大小,它将适合你。你应该尝试将它减少到~64。