当前位置: 首页 > 面试题库 >

即使使用max_allowed_pa​​cket参数,使用mysqldump时也会失去与mysql的连接

司马建柏
2023-03-14
问题内容

我想将特定的表转储到我的远程服务器数据库中,效果很好,但是其中一个表是9m行,我得到:

Lost connection to MySQL server during query when dumping table `table_name` at row: 2002359

因此,在在线阅读后,我了解到我需要增加我的max_allowed_pa​​cket,并有可能将其添加到我的命令中。

所以我运行以下命令来转储我的表:

mysqldump -uroot -h my.host -p'mypassword' --max_allowed_packet=512M db_name table_name | gzip  > dump_test.sql.gz

并且由于某种原因,我仍然得到:

Lost connection to MySQL server during query when dumping table `table_name` at row: 2602499

难道我做错了什么?

它的记录很奇怪,只有900万条记录…不太大。


问题答案:

尝试将--quick选项添加到mysqldump命令中;它在大型桌子上工作得更好。它将行从结果集流到输出,而不是将整个表都包含在表中,然后将其写出。

 mysqldump -uroot -h my.host -p'mypassword' --quick --max_allowed_packet=512M db_name table_name | \
 gzip  > dump_test.sql.gz

您也可以尝试将--compress选项添加到mysqldump命令。这使得它对MySQL服务器使用对网络更友好的压缩连接协议。注意,您仍然需要gzip管道。MySQL的压缩协议不会导致转储脱离mysqldump压缩。

服务器也可能超时了与mysqldump客户端的连接。您可以尝试重置超时时间。通过其他方式连接到服务器并发出这些查询,然后运行mysqldump作业。

这些将超时设置为一个日历日。

    SET GLOBAL wait_timeout=86400;
    SET GLOBAL interactive_timeout=86400;

最后,如果您的服务器(通过路由器和防火墙)距离您的计算机较远,则可能会中断mysqldump的连接。一些劣质的路由器和防火墙对NAT(网络地址转换)会话具有时间限制。他们应该在使用过程中使这些会话保持活动状态,但有些则不会。也许您正在达到公司为外部连接配置的时间或大小限制。

尝试登录更靠近服务器的计算机并mysqldump在该计算机上运行。然后使用其他方法(sftp?)将您的gz文件复制到您自己的计算机上。

或者,您可能必须分段此文件的转储。您可以执行以下操作(未调试)。

mysqldump  -uroot -h my.host -p'mypassword'  \ 
          db_name table_name --skip-create-options --skip-add-drop-table \
          --where="id>=0 AND id < 1000000" | \
          gzip....

然后用这些行重复。

          --where="id>=1000000 AND id < 2000000" | \

          --where="id>=2000000 AND id < 3000000" | \
          ...

直到获得所有行。颈部疼痛,但可以。



 类似资料:
  • 我正在收听一个Activemq队列。 我的配置如下: 从控制台日志中,我可以看到尝试重新连接到该服务器。 [2014-08-20 08:57:43,303]INFO 236[ActiveMQ Task-1]-org.apache.activemq.transport.failover.FailoverTransport.doReconnect(FailoverTransport.java:1030

  • 问题内容: 我发现了如何使用更改MySQL中的默认值。但是,每次使用此命令时,默认值都保持不变!我使用了以下命令: 然后结果是max_allowed_pa​​cket =1048576。我缺少什么? 问题答案: 嗯..您似乎击中了这个NOT-A-BUG。:) 如果更改全局系统变量,则该值将被记住并用于新连接,直到服务器重新启动。(要使全局系统变量设置永久生效,您应该在选项文件中进行设置。)该更改对

  • 问题内容: 我有一个包含10个元素的div,这些元素将被逐个更新,延迟时间为2秒。下面是相同的代码 但是,当我运行它时,所有元素都会一起更新。该程序只是添加一个延迟添加一个开始,并且所有元素都一起更新(被标记)。如何制作代码来逐一标记元素? 问题答案: 您正在打破React的两个基本规则: 不要直接改变状态 如果根据现有状态更新状态,请使用回调形式,因为状态更新可能是异步的(无论如何,在您的示例中

  • 问题内容: 与MySQL的Hibernate连接未关闭。在大约10秒钟内单击10次后,我从MySQL Workbench(在我的开发机中。我是唯一的用户)获得此连接统计信息。MySQL Workbench Server状态 我已经准备好了 C3P0并正在运行(从log4j中检查,与C3P0相关的问题没有问题,似乎正在运行) 一个ServletReqestListener,它检查是否存在打开的会话,

  • 我对Android Studio和Android编程都很陌生。我刚刚读了关于第一个common Intent教程的内容,它是关于。我试着编写一个简单的代码来测试这个意图,但是抛出的无效,堆栈跟踪如下所示: 05-20 15:36:25.010 2342-2342/com。维法隆。helloandroid E/AndroidRuntime:致命异常:主进程:com。维法隆。helloandroid,

  • 本文向大家介绍MySQL数据迁移使用MySQLdump命令,包括了MySQL数据迁移使用MySQLdump命令的使用技巧和注意事项,需要的朋友参考一下 该方案优点是简单,容易手上;缺点是停机时间较长。 因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成。 以下是MySQLdump命令的一些用法: 1.将整个数据库的数据及建表文件导出到sql文件中 2.将sql文件的数据导