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