MySQL在mysqldump上丢失连接错误

我有一个1TB的MySQL数据库,我想转储和重新加载。 大部分数据都在一张表中。 很多数据已经被删除,所以我很确定如果我把它转储到mysql,重build数据库,然后重新加载它的总大小将会更小。

我用这个命令来转储数据:

mysqldump -uroot -pXXX mydb | gzip -c > data.sql.gz 

我得到这个错误

  mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `MY_TABLE` at row: 596089342 

我已经尝试了许多变化,包括增加数据包大小,做单个翻译,并通过TCP / IP而不是本地套接字。

 mysqldump -uroot -pXXX -h 127.0.0.1 --max-allowed-packet=1024M --single-transaction mydb | gzip -c > data.sql.gz 

最后,我甚至运行了命令去/ dev / null,以确保它不是gzip。 所有的排列都会产生相同的错误。

 mysqldump -uroot -pXXX -h 127.0.0.1 mydb > /dev/null 

以下是my.cnf中的一些设置

 max_allowed_packet = 1G interactive_timeout = 600 wait_timeout = 600 net_read_timeout=600 net_write_timeout=600 connect_timeout=600 

另外一件奇怪的事情是垃圾堆总是停在同一个地方。 大约6GB的压缩数据和大致相同的logging。 当我做ls -l文件大小总是一样的。

我很难过 有关下一步的任何build议?

为了logging,这是在Ubuntu 11.10上运行的Mysql 5.1.58

最后,它看起来像我有一个数据损坏。 我已经复制了与LVM链接的两卷(EC2 ebs)。 在制作副本时,我可能没有正确地冻结音量,我怀疑他们没有正确同步。 我从原始卷开始,再次运行该程序,在采取EC2快照之前仔细冻结xfs卷,然后将副本加载到我的新服务器上,并且工作正常。

你有没有尝试过使用套接字文件,绕过TCP / IP层例如

 # Find the socket file eg $ grep "^socket" /etc/my.cnf socket = /var/lib/mysql/mysql.sock # # Plug the filename into the mysqldump $ mysqldump --socket=/var/lib/mysql/mysql.sock -uroot mydb | gzip -c > data.sql.gz