大型MySQL转储文件无法导入

4

我有一个名为dbBACKUP.sql的MySQL备份文件,大小约为152 MB。它有数千条记录。我使用以下命令来导入它:

mysql -u root -p --default-character-set=utf8 phpbb3 < dbBACKUP.sql

在输入root密码后,我进入phpmyadmin检查导入到数据库中的数据。我注意到总行数和总大小(以MB为单位)的变化缓慢增加,直到刷新phpmyadmin时似乎没有任何变化。

我认为这可能是服务器内存问题。是否有任何配置设置可以增加MySQL使用的内存?或者任何解决此任务性能问题的解决方案?

这是在基于Windows 7 64位的我的台式机上发生的。Mysql服务器版本为5.6.16。

3个回答

4

我在谷歌搜索中发现了这篇博客,或许可以帮助你:http://cmanios.wordpress.com/2013/03/19/import-a-large-sql-dump-file-to-a-mysql-database-from-command-line/

该博客介绍了如何通过命令行将大型SQL转储文件导入到MySQL数据库。
-- connect to database
mysql -u root -p

-- set network buffer length to a large byte number.
set global net_buffer_length=1048576;

-- set maximum allowed packet size to a large byte number.
set global max_allowed_packet=1073741824;

-- set read buffer size to a large byte number.
set global read_buffer_size=2147479552;

-- disable foreign key checking to avoid delays,errors and unwanted behaviour 
SET foreign_key_checks = 0;

-- import your sql dump file
source C:\[your_path]\dbBACKUP.sql

-- enable foreign key checking after import
SET foreign_key_checks = 1;

我注意到在前两个设置命令中出现了一个警告。然而,我并没有注意到性能有任何显著的提高。这可能是由于缓冲区和数据包设置没有应用。我将尝试直接在my.ini中设置它们。 - SaidbakR
我查了系统变量的max_values并更新了我的帖子。在这里查看sysvariables的描述:doc - oerl

3

尝试使用SOURCE命令而不是重定向您的SQL文件。

mysql -u root -p --default-character-set=utf8
use phpbb3
source /full/path/to/your/dbBACKUP.sql

我相信这是my.ini配置的问题,但我不知道值应该是什么。 - SaidbakR
1
尝试增加max_allowed_packet和read_buffer_size的大小。 max_allowed_packet = 200M read_buffer_size = 2014K - jdiver

1
此外,您需要同时更改客户端和守护进程mysqld服务器的设置。在[mysqld]部分更改my.cnf或my.ini文件,并将max_allowed_packet设置为1000M,或者您可以在连接到同一服务器的MySQL控制台中运行以下命令:
    set global net_buffer_length=1000000000; 
    set global max_allowed_packet=1000000000;

使用非常大的数据包大小,因为它们是以字节为单位的,然后重新启动MySQL服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接