MySQL 在 mysqldump 上丢失连接错误

MySQL 在 mysqldump 上丢失连接错误

我有一个 1 TB 的 MySQL 数据库,我想将其转储并重新加载。大多数数据都在一个表中。很多数据已被删除,所以我很确定如果我用 mysql 转储它,重建数据库,然后重新加载它,总大小会更小。

我正在用以下命令转储数据:

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 的 gzip 压缩数据,并且大约在同一条记录上。当我执行 ls -l 时,文件大小总是相同的。

我被难住了。有什么下一步的建议吗?

顺便说一下,这是在 Ubuntu 11.10 上运行的 Mysql 5.1.58

将要

答案1

最后,看起来我的数据损坏了。我复制了两个与 LVM 链接的卷 (EC2 ebs)。我在复制时可能没有正确冻结卷,我怀疑它们没有正确同步。我从原始卷开始,再次运行该过程,在拍摄 EC2 快照之前小心地冻结 xfs 卷,然后将副本加载到我的新服务器上,它工作正常。

答案2

您是否尝试过使用套接字文件来绕过 TCP/IP 层,例如

# Find the socket file e.g.
$ 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

答案3

我遇到了同样的错误,服务器没有更多可用的内存,也没有交换。Mysqldump 占用了所有内存,所以我减少了 my.ini 中与内存相关的参数,因为这样可以

相关内容