Недостаточно ресурсов для mysqldump

Недостаточно ресурсов для mysqldump

Я пытаюсь сделать mysqldump наОкнасервер и я получаю следующеесообщение об ошибке:

mysqldump: Got error: 23: Out of resources when opening file '.\db\sometable.MYD' (Errcode: 24) when using LOCK TABLES

ВоткомандаЯ бегу :

mysqldump -u user -p"pass" --lock-tables --default-character-set=latin1 -e --quick databasename > "query.sql"

Перезапуск службы mysql не помог.

Я всегда получаю сообщение об одном и том же столе.

Я пробовал уменьшитьtable_cacheимакс_подключенийпеременные от 64 до 32 и от 30 до 10 соответственно, но я все еще получаю ошибку, только на этот раз для другой таблицы (и с этого момента сообщение об ошибке всегда будет упоминать вторую таблицу).

Тот же скрипт запущен на десятке другихОкнасерверы с одинаковой базой данных без проблем.

Все базы данных содержат 85 таблиц.

решение1

В соответствии сздесь- «Код ошибки ОС 24: Слишком много открытых файлов», что соответствует более общей ошибке 23 «Недостаточно ресурсов».

Так что, похоже, у вас заканчиваются дескрипторы файлов. Обычно это проблема/настройка на стороне сервера, либо в MySQL, либо в самой ОС.

Возможно, проверьте/отрегулируйте--open-files-limitпараметрв самом MySQL и посмотрите, поможет ли это.

Также, возможно, попробуйте запустить дамп, пока никто не использует БД, с помощью--single-transactionпараметрвместо того --Lock-File, чтобы, как предполагают некоторые люди, это будет работать с одной таблицей за раз, а не открывать их все одновременно (следовательно, используя меньше дескрипторов файлов).

Кроме того, вам, вероятно, придется найти первопричину того, почему этот конкретный сервер исчерпывает ресурсы. Что, вероятно, будет включать устранение неполадок путем отключения как можно большего количества служб/процессов и проверки того, пройдет ли дамп. Затем выясните, кто является виновником, который съедает слишком много ресурсов и, возможно, не освобождает их правильно.

решение2

Можете ли вы попробовать это --single-transactionвместо --lock-tablesтого, например, таблицы InnoDB, и вы не используете таблицы Cluster, и что ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE не будут выполняться во время дампа? Лучше всего подтвердить это в вашей службе поддержки MySQL, если она у вас есть.

Я пробовал это только на Unix, но если я попробую сделать это с базой данных с 2000 таблиц, то произойдет ошибка, похожая на вашу, например, я использовал все свои открытые файловые дескрипторы.

решение3

Вы можете получить следующую ошибку:

MySQL: код ошибки: 24 при использовании LOCK TABLES

...а также другие ошибки при обновлении до MySQL 5.5 и запуске резервного копирования в Plesk или любой другой ОС, выполняющей mysqldump.

Исправить:

  1. Редактироватьmy.cnf
  2. Добавлять:

    open_files_limit=2048
    
  3. Перезапустить MySQL

Если вы получаете:

Невозможно загрузить из mysql.proc. Таблица, вероятно, повреждена (1548)

Это результат обновления до версии 5.5. Выполнить:

mysql_upgrade --force

Протестировано и работает на CentOS 6.7 и Plesk 12.

решение4

У меня была похожая проблема, как у Филиппа. Когда я запустил дамп, я увидел такую ​​ошибку:

mysqldump: Got error: 23: Out of resources when opening file './c1baznarz/timecard.MYD' (Errcode: 24) when using LOCK TABLES

Я использовал простую команду:

mysqldump -uroot -p c1baznarz > c1baznarz.sql

Итак, я добавляю еще одну команду в свой mysqldump:

--single-transaction

и дамп готов. Итак, мой запрос mysqldump выглядит так:

mysqldump -uroot -p --lock-tables --single-transaction c1baznarz > c1baznarz.sql

Связанный контент