MySQL 在 mysqldump 上丢失连接错误

Wil*_*ass 7 mysql

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

我正在使用此命令转储数据:

mysqldump  -uroot -pXXX  mydb | gzip -c > data.sql.gz
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

 mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `MY_TABLE` at row: 596089342
Run Code Online (Sandbox Code Playgroud)

我尝试了许多变体,包括增加数据包大小、进行单一转换和通过 TCP/IP 而不是本地套接字。

mysqldump  -uroot -pXXX -h 127.0.0.1 --max-allowed-packet=1024M  --single-transaction mydb | gzip -c > data.sql.gz
Run Code Online (Sandbox Code Playgroud)

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

mysqldump  -uroot -pXXX -h 127.0.0.1 mydb > /dev/null
Run Code Online (Sandbox Code Playgroud)

这是 my.cnf 中的一些设置

max_allowed_packet = 1G
interactive_timeout = 600
wait_timeout = 600
net_read_timeout=600
net_write_timeout=600
connect_timeout=600
Run Code Online (Sandbox Code Playgroud)

另一件奇怪的事情是转储总是停在同一个地方。大约 6GB 的 gzip 数据和大致相同的记录。当我执行 ls -l 时,文件大小始终相同。

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

作为记录,这是在 Ubuntu 11.10 上运行的 Mysql 5.1.58

将要

aro*_*r11 0

您是否尝试过使用套接字文件来绕过 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
Run Code Online (Sandbox Code Playgroud)