У меня есть база данных 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, как работал