У меня установлена база данных, которую я хотел бы сделать резервную копию в 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
Посоветуйте или дайте несколько советов о том, как сделать дамп базы данных?
Ответы:
Я мог бы легко предложить изменить настройки InnoDB, которые могли бы быть немного жесткими, просто чтобы заставить работать mysqldump. Возможно, вам не понравится то, что я о предложении, но я считаю, что это ваш лучший (единственный) вариант. Здесь это идет:
ПРЕДЛОЖЕНИЕ № 1: Отключить расширенные вставки
Настройка по умолчанию для mysqldump будет включать в себя объединение сотен или тысяч строк в один INSERT. Это называется расширенной вставкой. Это вызывает некоторый переполнение за пределами только max_allowed_packet .
Я ответил на пост
Sep 01, 2011
( MySQL-сервер ушел, препятствуя импорту больших дампов ), где я обсуждал то же самое для импорта большого mysqldump. Я полагаю, что отключение расширенной INSERT также поможет в создании проблемного mysqldump.Плохая новость: что это делает при создании команды INSERT для каждой строки. Это определенно увеличит время, необходимое для выполнения mysqldump. Следовательно, это также увеличится до времени, необходимого для перезагрузки (вероятно, в 10-100 раз.
Я обсуждал
skip-extended-insert
раньшеAug 12, 2011
: Почему файл mysqldump такой большой?Aug 09, 2013
: Резервное копирование / Экспорт данных из таблицы вложений MySQL 5.5 продолжает сбой!Nov 16, 2014
: Как объединить несколько операторов вставки для дампа базы данных с MySQL?ПРЕДЛОЖЕНИЕ № 2: Дамп двоичных данных в шестнадцатеричном виде (опционально)
Чтобы сделать двоичные данные mysqldump более переносимыми байтами, выведите эти данные в шестнадцатеричном формате.
Плохая новость: mysqldump еще больше раздует
ДАЙТЕ ЭТО ПОПРОБУЙТЕ !!!
Примечание: максимальный размер max_allowed_packet составляет 1G
источник
Я также получал ту же ошибку при попытке выгрузить 12 ГБ базы данных. Я сделал следующие изменения, чтобы это работало.
Примечание: я знаю, что значения времени ожидания слишком высоки (7200 секунд, т.е. 20 часов). Но я сделал это намеренно, чтобы исключить любой шанс. Я нахожусь в процессе нахождения оптимального значения тайм-аута.
источник
Просто включите следующее в файл конфигурации my.ini (Windows) или my.cnf (Linux).
источник
Убедитесь, что у вас достаточно памяти для создания дампа. Пожалуйста, продолжайте проверять память при получении дампа, например, используя такую команду:
Если у вас истощится память при приеме дампа, вы получите
источник
Я нашел:
... заставляет его работать там, где он не (надежно) ранее, несмотря на изменения таймаута net read / write, TCP keepalive и т. д.
Сами по себе
max_allowed_packet
настройки не помогли, поэтому могут не потребоваться, если ониnet_buffer_length
используются. - Ральф-БолтонМодификация
max-allowed-packet
иnet-buffer-length
кажется намного лучше, чем отключение расширенных вставок. - КристоферСмотрите также Какой max_allowed_packet достаточно большой и зачем мне его менять?
источник