Назад | Перейти на главную страницу

Ошибка потери соединения MySQL на mysqldump

У меня есть база данных MySQL объемом 1 ТБ, которую я хотел бы сбросить и перезагрузить. Большая часть данных находится в одной таблице. Было удалено много данных, поэтому я почти уверен, что если я сброшу их с помощью 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

Еще одна странность в том, что свалка всегда останавливается на одном и том же месте. Примерно 6 ГБ сжатых данных и примерно такая же запись. Когда я использую ls -l, размер файла всегда идентичен.

Я в тупике. Есть предложения по дальнейшим действиям?

Для записи это Mysql 5.1.58, работающий на Ubuntu 11.10.

ВОЛЯ

В конце концов, похоже, у меня произошло повреждение данных. Я скопировал два тома (EC2 ebs), которые были связаны с LVM. Возможно, я неправильно заморозил том при создании копии и подозреваю, что они не были должным образом синхронизированы. Я начал с исходных томов, снова запустил процедуру, осторожно заморозив том xfs перед созданием моментального снимка EC2, затем загрузил копии на мой новый сервер, и все заработало.

Вы пробовали использовать файл сокета, чтобы обойти уровень 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

У меня та же ошибка, на сервере больше нет доступной оперативной памяти и нет свопа. Mysqldump ел всю память, поэтому я уменьшил связанные с памятью параметры в my.ini, как работал