mysqldump Error 2013


18

У меня установлена ​​база данных, которую я хотел бы сделать резервную копию в MySQL. Проблема mysqldumpне в экспорте таблицы 'maia_mail'

# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15

Он работает менее 30 секунд и выдает ошибку, как указано выше.

Общий размер БД составляет 1,3 ГБ, а таблица maia_mail - 1,0 ГБ.

У my.cnfменя есть эти наборы:

[mysqld]
max_allowed_packet      = 1300M
[mysqldump]
max_allowed_packet      = 1300M

Посоветуйте или дайте несколько советов о том, как сделать дамп базы данных?


170 ГБ свободного места. Это также одно и то же, независимо от того,
дам

копии электронной почты, так что данные в основном varchar
garfink

1300M был недавним изменением, проблема существовала, когда он был установлен на значение по умолчанию 16M. Сервер также был перезапущен после изменения на 1300M.
garfink

Я установил обратно на 16M по умолчанию. дамп приводит к той же ошибке 2013 в строке 15
garfink

Ответы:


13

Я мог бы легко предложить изменить настройки InnoDB, которые могли бы быть немного жесткими, просто чтобы заставить работать mysqldump. Возможно, вам не понравится то, что я о предложении, но я считаю, что это ваш лучший (единственный) вариант. Здесь это идет:

ПРЕДЛОЖЕНИЕ № 1: Отключить расширенные вставки

Настройка по умолчанию для mysqldump будет включать в себя объединение сотен или тысяч строк в один INSERT. Это называется расширенной вставкой. Это вызывает некоторый переполнение за пределами только max_allowed_packet .

Я ответил на пост Sep 01, 2011( MySQL-сервер ушел, препятствуя импорту больших дампов ), где я обсуждал то же самое для импорта большого mysqldump. Я полагаю, что отключение расширенной INSERT также поможет в создании проблемного mysqldump.

mysqldump -u root --skip-extended-insert -p maia > maia.sql

Плохая новость: что это делает при создании команды INSERT для каждой строки. Это определенно увеличит время, необходимое для выполнения mysqldump. Следовательно, это также увеличится до времени, необходимого для перезагрузки (вероятно, в 10-100 раз.

Я обсуждал skip-extended-insertраньше

ПРЕДЛОЖЕНИЕ № 2: Дамп двоичных данных в шестнадцатеричном виде (опционально)

Чтобы сделать двоичные данные mysqldump более переносимыми байтами, выведите эти данные в шестнадцатеричном формате.

mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql

Плохая новость: mysqldump еще больше раздует

ДАЙТЕ ЭТО ПОПРОБУЙТЕ !!!

Примечание: максимальный размер max_allowed_packet составляет 1G


5

Я также получал ту же ошибку при попытке выгрузить 12 ГБ базы данных. Я сделал следующие изменения, чтобы это работало.

  1. настроил max_allowed_packet на 1024M
  2. настроил net_read_timeout на 7200
  3. настроил net_write_timeout на 7200

Примечание: я знаю, что значения времени ожидания слишком высоки (7200 секунд, т.е. 20 часов). Но я сделал это намеренно, чтобы исключить любой шанс. Я нахожусь в процессе нахождения оптимального значения тайм-аута.


2
Для других пользователей: это настройки на сервере, а не в файле конфигурации mysqldump. Кроме того, 7200 секунд - это 2 часа, а не 20.
Марк

установить глобальный net_read_timeout = 120; установить глобальный net_write_timeout = 900; работал для меня
Каши

2

Просто включите следующее в файл конфигурации my.ini (Windows) или my.cnf (Linux).

[mysqld]
max_allowed_packet=1024M 

[mysqldump]
max_allowed_packet=1024M 
net_read_timeout=3600 
net_write_timeout=3600

2
Разделы должны быть наоборот.
OrangeDog

1

Убедитесь, что у вас достаточно памяти для создания дампа. Пожалуйста, продолжайте проверять память при получении дампа, например, используя такую ​​команду:

free -mt

Если у вас истощится память при приеме дампа, вы получите

mysqldump: ошибка 2013: потерянное соединение


1

Я нашел:

--max-allowed-packet=1G --net-buffer-length=32704

... заставляет его работать там, где он не (надежно) ранее, несмотря на изменения таймаута net read / write, TCP keepalive и т. д.

Сами по себе max_allowed_packetнастройки не помогли, поэтому могут не потребоваться, если они net_buffer_lengthиспользуются. - Ральф-Болтон

Модификация max-allowed-packetи net-buffer-lengthкажется намного лучше, чем отключение расширенных вставок. - Кристофер

Смотрите также Какой max_allowed_packet достаточно большой и зачем мне его менять?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.