MYSQL:导入大数据库时出现问题(非常慢)



我想导入一个非常大的SQL文件到MySql (30GB)。

我已经尝试了bigdump.php(外键错误)脚本和简单的导入。之后,我尝试通过命令行来完成:

(mysql -u username -p database_name < file.sql)

2小时后,我有一个9gb的db。再过10个小时,我就有了一个10.1 GB的数据库。

进程似乎正在运行,但是非常慢(200000行/100MB/小时)。

如何解决这个问题?谢谢你

这很可能是由于MySQL需要检查每一行的键约束。但是,既然您(希望)已经知道该文件不包含违反约束的内容,那么您可能希望关闭一些检查。MySQL有一个关于InnoDB表的批量数据加载和INSERT语句速度的手册页。

你通常想做的是将这些命令添加到.sql文件的顶部:
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;

和这些到底部:

COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;

您可以在MySQL命令行中执行此操作,而无需直接编辑.sql文件:

SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
SOURCE yourbigfile.sql;
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;
注意,这个在bigdump.php中不起作用,因为该脚本不会记住每个块之间的这些设置。我不认为bigdump.php会很好地处理包含外键的转储。

尝试压缩db然后通过命令行上传。

最新更新