我在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是否抛出了大小错误......
答案 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 参数)。你可以:
答案 3 :(得分:0)
您可能需要查看this。这个开发人员使用一个名为Access to MYSQL的程序迁移数据,看起来很有希望。
答案 4 :(得分:0)
我建议您使用Talend data integration工具。您可以轻松地创建作业地图,然后开始工作。它会处理批量大小和东西。
我有一个巨大的MSSQL数据库,我迁移到MySQL它做得很好。与MSSQL相比,我甚至在MySQL中进行了一些结构更改。它有一个很好的GUI,您只需通过WYSIWYG映射列。它建立在Eclipse之上,所以如果你在使用它之前就已经熟悉了它。
答案 5 :(得分:0)
我长时间摆弄这个问题,终于找到了解决方案。这里的错误消息非常模糊。您不需要为系统添加更多内存,只需减小数据包大小即可。发生此错误是因为mysql尝试形成更高数量的包并且保持失败。
错误讯息: 没有足够的内存来分配大小为1073741824的插入缓冲区
如果你只是减少缓冲区大小,它将适合你。你应该尝试将它减少到~64。