2013-11-01 66 views
8

我想恢复13G大的sql转储文件。我首先在xampp中使用了phpAdmin,它说这个大小太大了。然后我使用大转储,仍然收到“我无法在xx.sql中查找”的错误消息。我在网上发现它意味着文件太大。 然后我开始使用命令行。 mysql -u用户名-p数据库<位置/ to/your/dump.sql 似乎它正在工作,因为它要求输入密码,并且我直接按Enter键,因为我没有密码。 现在我可以看到“_”不断闪烁,我假设这意味着它正在工作。但是,我无法检查确认,而且已经过了一段时间了。尝试恢复大于10 GB的sql转储文件

有没有办法确保它正在工作?我真的很感谢你的帮助! TJ

回答

0

我恢复类似大小的文件

  1. 我要花大概4-5小时,可以更取决于键和约束你有
  2. 您可以随时检查进程列表中看到的性质如果它有效。
  3. tail -f mysql的通用日志,并确保它记录任何查询。这是查看它是否正常工作的最简单方法。 一个警告,这减慢一切甚至更多,由100%+
+0

谢谢您的快速答复!我检查了进程列表,命令行程序在进程列表中,但它没有使用任何CPU。 –

+0

但我不明白你建议的第三个提示。我如何检查日志?谢谢。 –

7

另一种方式与mysql命令行客户机恢复文件是这样的:

$ mysql -u username -p database 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 2933685 
--8<-- snip --8<-- 

mysql> source location/to/your/dump.sql 

source命令将读取转储文件并将其应用到服务器,就像<重定向运算符一样,但有两点不同:您将看到滚动的连续“受x行影响”的消息,这表明实际进度确实正在发生。这种方法的缺点是,与使用<重定向的方法不同,如果转储文件中存在任何错误,命令行客户端只会尝试继续前进,而这并不总是您想要的。不过,这可能是一个可行的方法。

或者......您现在正在执行此操作的方式,如果您能看到流程列表中的连接,请检查Sleep的值。如果该值始终为0,则会发生某种活动。

+1

这对我来说效果很好。我有几个数据库,它们都超过1GB的备份。我最大的是12GB。此方法在15分钟内非常快速地导入数据。之前,我使用MySQL -u root -p database user1794918

0

尝试这种技术

连接到远程MySQL数据库之后...

  • 生成一个查询来创建表架构,程序和源的功能DB
  • 生成查询找到的所有索引除源数据库的外键约束以外的所有表中的所有表
  • 生成查询以删除在步骤2中找到的所有索引
  • 生成查询以插入源数据库的所有数据
  • 生成查询以创建在第2步中找到的所有索引
  • 按上述顺序将所有查询写入一个.sql文件,这是您的新MySql备份。使用LZ4压缩进行压缩。
  • 现在只需使用MySql的普通恢复实用程序从此文件恢复数据库。

编号:http://axiomnext.com/blog/how-to-restore-large-mysql-database-faster/