Php MySQL存档数据…当它';太大了

Php MySQL存档数据…当它';太大了,php,mysql,mysqldump,Php,Mysql,Mysqldump,我在PHP脚本中使用INSERT-INTO和DELETE-FROM组合从可操作的MySQL表中取出数据,并将其放入存档表中 存档表太大了。尽管没有对其执行日常操作,但当我们备份时,mysqldump会阻塞(错误2013): 错误2013:在第1915554行转储表“some_table”时,在查询过程中与MySQL服务器失去连接 我能做什么?我的PHP脚本是否应该将其移动到另一个DB(如何?)?将大表保留在操作数据库中可以吗?--在这种情况下,如何解决mysqldump问题 谢谢 您可以尝试--

我在PHP脚本中使用
INSERT-INTO
DELETE-FROM
组合从可操作的MySQL表中取出数据,并将其放入存档表中

存档表太大了。尽管没有对其执行日常操作,但当我们备份时,mysqldump会阻塞(错误2013):

错误2013:在第1915554行转储表“some_table”时,在查询过程中与MySQL服务器失去连接

我能做什么?我的PHP脚本是否应该将其移动到另一个DB(如何?)?将大表保留在操作数据库中可以吗?--在这种情况下,如何解决mysqldump问题

谢谢

您可以尝试
--var\u max\u allowed\u packet=???
--var\u net\u buffer\u length=???

您还可以尝试禁用扩展插入:
--跳过扩展插入

但这是假设你对桌子太大的诊断是正确的


这个表到底有多大?

您是否偶然使用内存缓冲转储,并耗尽了交换和物理RAM?如果是这样,您可以尝试逐行转储

尝试在mysqldump语句中添加--quick

根据文档,您应该将--single transaction与--quick结合起来


来源:

至于第二个问题,请尝试直接登录到MySQL服务器并从那里运行
mysqldump
,最好将转储写入本地文件系统,但是,移动普通数据的网络连接比任何SQL连接都要可靠得多。

查找@Will关于2013年由于表过大而产生的错误代码的答案

然而,这并不是我的问题。当我运行
时,选择
where,给它一个
where id>500000和id500000和id

它对我有效

你使用mysql还是mysqli驱动程序?@Book of Zeus-不确定,但这种情况也发生在shell上你是说shell使用
/usr/bin/mysql
?(我有同样的问题,我用mysqli修复了它)用
mysqldump--opt--single transaction--quick-u someuser-p
尝试了它,得到了相同的错误表中有多少数据,它有多少行?另外,你确定你没有用完磁盘空间吗?这个MySQL错误建议检查你的超时设置:我确定我有足够的磁盘空间。当我运行
SELECT COUNT(*)
时,我得到一个
错误2013(HY000)
,所以我不确定行数。错误显示它在200万行附近崩溃。我删除了那一行和相同的内容。您还可以尝试使用多个调用和--where参数对备份进行分区。虽然这看起来像是一个黑客,但诊断可能是错误的。具有讽刺意味的是,当我
选择COUNT(*)
我也在尝试linux shell时,我得到了一个
错误2013(HY000)
。这就是你的意思吗?Shell还是GUI,没有区别。它与服务器直接在同一台机器上运行,因此它们之间没有网络连接。
 mysqldump --opt --max_allowed_packet=128M base_de_datos > bd.sql