导入8GB的mysql转储需要很长时间

时间:2011-05-23 07:05:11

标签: mysql import mysqldump

我有一个用mysqldump创建的InnoDB表的8GB MYSQL数据库转储。我用以下内容导入数据:

mysql -uroot -p my_db < dump.sql

在一小时内导入了5 GB的DB转储。 8 GB转储需要50个小时计算。当我用

检查进程列表时
  

SHOW PROCESSLIST;

大多数情况下,只有一个INSERT查询可见状态为“'释放项”

除了复制原始文件之外,还有办法加快导入过程吗?

2 个答案:

答案 0 :(得分:14)

真正的诀窍是确保最大的单个表适合innodb缓冲池。如果没有,那么插入(当然导入)将非常慢。

整个数据库的大小并不重要,但是最大的单表。

对于大得多的数据库,您可能需要考虑传输数据库的其他方法,例如文件系统快照。如果您的机器运行相同版本的数据库,操作系统和体系结构,这当然最有效。

答案 1 :(得分:6)

机器有多少内存?我的第一个猜测是机器有6GB或8GB的内存,并且mysql能够将第一个转储完全保留在内存中,但在第二次导入时以某种方式交换硬核。您可以在执行导入时运行vmstat 5几次迭代,看看系统交换的重要程度吗?