如何防止大型MySQL导入的连接超时



在开发过程中,我们的本地WAMP服务器从测试服务器获取最新数据的方式是对数据库进行转储,并使用source命令加载.sql文件上传该转储。

最近,在导入的最后,我们收到了关于@old变量的错误,这些变量在更改之前存储了原始设置,如外键约束(因此,关闭外键约束,以便导入在重新创建表时不会引发错误,并在尚未创建表时尝试创建外键)。我已经发现,原因是产品表获得了越来越多的数据,并且在导入过程中会话一度超时。

我想知道我可以设置什么设置(作为my.ini文件中SQL查询的一部分)来停止所有超时,从而使会话在我们登录时永远持续。

导入大型MySQL数据库的策略

PHPMyAdmin导入

如果您正在阅读这篇文章,PHPMyAdmin可能不是大型MySQL数据库导入的选项。尽管如此,它总是值得一试的,对吧?PHPMyAdmin导入失败的最常见原因是超过了导入限制。如果您在本地工作或有自己的服务器,您可以尝试更改MySQL ini设置,该设置通常位于MySQL安装文件夹中的my.ini文件中。如果您在Windows上使用WAMP,您可以使用MySQL>my.ini下的WAMP控制面板访问该文件。请记住重新启动WAMP,以便使用您的新设置。您可能想在此处增加的设置包括:

max_allowed_packet
read_buffer_size

即使使用了增强的MySQL导入设置,您可能仍然会发现导入由于PHP设置而超时。如果您有权访问PHP.ini,您可以对最长执行时间和相关设置进行编辑。在WAMP中,访问WAMP控制面板下的PHP>PHP.ini文件。在尝试大型MySQL导入时,请考虑提高以下设置的限制:

max_execution_time
max_input_time
memory_limit

使用Big Dump交错MySQL转储导入程序

如果基本的PHPMyAdmin导入不起作用,您可能需要尝试Ozerov.de中的Big Dump脚本来进行交错的MySQL导入。这个有用的脚本所做的是在较小的块中运行导入,这正是成功导入大型MySQL转储所需要的。这是免费下载,可在http://www.ozerov.de/bigdump/.

使用Big Dump的过程相当简单:基本上将SQL导入文件和Big Dumpscript放在服务器上,在Big Dumps脚本中设置一些配置,然后运行该脚本。大垃圾场处理剩下的!

这个非常好的选项的一个关键点是,它在包含扩展插入的MySQL导出中根本不起作用。因此,如果你可以选择阻止扩展插入,请尝试。否则,你将不得不使用另一种方法来导入你的大型MySQL文件。

使用MySQL控制台执行命令行

如果您正在运行WAMP(即使没有),也可以直接使用MySQL控制台导入大型MySQL数据库。在写这篇文章的时候,我正在以这种方式导入一个4GB数据库。这就是为什么我有一些时间来写,因为当你有一个4GB的SQL文件要导入时,即使是这种方法也需要时间!

一些开发人员(通常是我)会因为打开黑屏并在其中输入神秘命令而感到害怕。但这可能是一种解放,当涉及到MySQL数据库时,这通常是最好的途径。在WAMP中,我们从MySQL>MySQL控制台的WAMP控制面板访问MySQL控制台。现在,让我们学习导入MySQL数据库所需的2个简单MySQL控制台命令,命令行样式:

use `db_name`

命令use后跟数据库名称将告诉MySQL控制台您要使用哪个数据库。如果您已经设置了要导入的数据库,那么您可以从发出use命令开始。假设您的数据库名为my_great_database。在这种情况下,请在MySQL控制台中发出以下命令。请注意,命令必须以分号结尾。

mysql-> use my_great_database;
mysql-> source sql_import_file.sql

命令source后跟SQL文件的位置,将SQL文件导入到以前使用use命令指定的数据库中。您必须提供路径,因此如果您在本地服务器上使用WAMP,请首先将SQL文件放在易于获取的位置,例如C:\SQL\my_import.SQL

mysql-> source C:sqlmy_import.sql;

运行该命令后,应该开始导入SQL文件。在关闭MySQL控制台之前,让查询运行并允许导入完成。

MySQL命令行的更多文档可以在这里找到:http://dev.mysql.com/doc/refman/5.5/en/mysql.html.

另一个解决方案是使用MySQL Workbench。

这个解决方案对我有效:

max_allowed_packet  <-- --> upped size to 8M
read_buffer_size  <-- -->  upped from 256 to 512

使用localhost上的Xampp控制面板。在MySQL配置中对my.ini文件进行更改后,不要忘记退出Xampp(或Wamp)并重新启动它以使更改生效。

(经过四天的头痛,我终于把它修好了!)

症状出现在导入上:#2006MySql服务器消失然而,在87个表行中,只有10个表行被导入。

考虑使用MySQL Workbench,它是免费的,可以很好地处理非常大的脚本(从菜单中选择:文件->打开SQL脚本-如果它很大,它会问你是否想运行它)。这些年来,在处理大型SQL转储时为我提供了很好的服务。

相关内容

  • 没有找到相关文章

最新更新