我不确定这是否应该在SuperUser中发布,因为我们正在使用Workbench中内置的迁移向导,请让我知道这个问题是否应该移动。MySQL数据库迁移缺少数据
目的
我们目前正处在从一台服务器数据库迁移到另一个,因为MySQL工作台有一个内置的叫迁移向导功能,我们认为我们将继续我们的快乐的方式迁移它的过程。我们有16种不同的数据库模式,需要以不同的大小进行迁移(最小为3 MB,最大为76 GB)。
问题
我们开始试图迁移中到大尺寸的那些坐在14.7 GB,并开始了罚款之一,但之后它已成功迁移的表的一半在那一个我们得到的错误“ MySQL服务器已经消失“。确保连接稳定并连接电缆(可能是无线信号掉线?)并确保完全权限并使用root用户进行迁移后,我们仍然得到“服务器已经消失”的错误。
然后我们尝试了可以正常工作的小型数据库,所以我们认为这可能是一个超时问题。我们尝试删除超时设置,但对于较大的数据库,我们仍然得到相同的错误。真正的踢球手就是我们目前正在经历的。
当我们在150 MB数据库上尝试此操作时,迁移向导会正确完成迁移,而不会出现任何错误或警告。出于好奇,我跑了下面的代码
SELECT table_name AS "Table",
round(((data_length + index_length)/1024/1024), 2) "Size in MB"
FROM information_schema.TABLES
WHERE table_schema = "TableName"
ORDER BY "Table";
为了确保表的大小是正确的。令我们惊讶的是,源数据库中的表格总和为150 MB,但目标数据库中的总和为94 MB。
问题(S)
可能一些其他的原因是为了什么,为什么我们得到的超时溢出和特权除了“服务器已经走了”的错误?为什么迁移向导会说迁移没有任何警告或错误就成功了,但实际上只有大约60%的数据被迁移了?迁移向导是不可信的,还是不应该被信任的表大小查询?我们是否正在讨论这个完全错误的问题,即,您是否推荐另一种更稳定的数据库迁移方式?
如果需要,我很乐意提供更多信息。
编辑:
的MySQL版本:5.1.41(Ubuntu的)
我们还检查的行数在每个表中每一个模式虽然大部分是正确的,有些翻错了。这是数据不一致的地方。在150 MB/94 MB的例子中有25个表。在这25张桌子中,有23张是正确的,2张是不正确的。在源代码中,其中一个表格有257万行,但只有150万行结束于目标表中。
编辑2:
运行相同的查询再次,现在给我150 94 150 8 150 24,现在第四次迁移它整个数据库。我猜这个问题位于其他地方,但不能为我的生活找出原因。花了92分钟迁移150 MB的数据。推断,这将给我大约一个月的时间来迁移75 GB的数据库 - 显然是不正确的。
这看起来像是一个计时问题,该会话或my.cnf中交互式timout和等待超时的当前值是什么?你测试设置为0(无限)吗? – 2014-09-02 13:54:29
我们查看了my.cnf,但找不到任何看起来像交互式或等待超时的参数。我们在寻找什么特定的参数?感谢您抽出宝贵时间。 – MagneTism 2014-09-02 14:11:12
[interactive_timeout](http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_interactive_timeout)默认为28800,即8小时。 – 2014-09-02 14:14:55