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

MYSQL: issue while import big db (very slow)

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

我已经尝试了bigdump.php(一些外键错误)脚本和简单的导入。之后我尝试通过命令行执行此操作:

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

2 小时后,我得到了 9 GB 的数据库。然后又过了 10 个小时,我有了一个 10.1 GB 的数据库。

现在的进程似乎是 运行,但速度非常慢(每小时 200000 行/100MB)。

如何解决这个问题? 谢谢

这很可能是由于 MySQL 需要检查每一行的键约束。但是由于您(希望如此)已经知道该文件不包含任何约束违规,您可能想要关闭一些检查。 MySQL 有一个关于 Bulk Data Loading for InnoDB Tables and Speed of INSERT Statements 的手册页。

您通常想要做的是将这些命令添加到您的 .sql 文件的顶部:

SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;

下面是这些:

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

您可以在 MySQL CLI 中执行此操作而无需直接编辑 .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 对于包含外键的转储会很好地工作。

尝试压缩数据库,然后通过命令行上传。