Я пытаюсь выполнить mysqldump на Windows сервер, и я получаю следующее сообщение об ошибке :
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 и max_connections переменные от 64 до 32 и от 30 до 10 соответственно, но я все еще получаю ошибку только на этот раз для другой таблицы (и с этого момента сообщение об ошибке всегда упоминает вторую таблицу).
Тот же сценарий работает на десятке других Windows серверы с одинаковой базой без проблем.
Во всех базах данных 85 таблиц.
В соответствии с Вот - «Код ошибки ОС 24: слишком много открытых файлов», что совпадает с более общей ошибкой 23 «Недостаточно ресурсов».
Кажется, что у вас заканчиваются дескрипторы файлов. Обычно это настройка / проблема на стороне сервера, либо в MySQL, либо в самой ОС.
Возможно, проверьте / отрегулируйте --open-files-limit
установка в самом MySQL и посмотрите, поможет ли это.
Кроме того, возможно, попробуйте запустить дамп, пока никто другой не использует БД, с --single-transaction
установка вместо того --Lock-File
, поскольку несколько человек предполагают, что это будет работать с одной таблицей за раз, вместо того, чтобы открывать их все сразу (поэтому используется меньше дескрипторов файлов).
Помимо этого, вам, вероятно, придется найти первопричину того, почему на этом конкретном сервере не хватает ресурсов. Что, вероятно, потребует устранения неполадок, отключив как можно больше служб / процессов и посмотрев, пройдет ли дамп. Затем выясните оттуда, кто виноват в том, что съедает слишком много ресурсов и, возможно, неправильно их освобождает.
Вы можете попробовать это с --single-transaction
вместо того --lock-tables
например таблицы - это InnoDB, и вы не используете таблицы кластера, и что ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE не произойдет во время дампа? Лучше всего подтвердить, что это нормально, в вашей службе поддержки MySQL, если она у вас есть.
Я пробовал это только в unix, но в основном, если я пытаюсь использовать БД с 2000 таблицами, он терпит неудачу с ошибкой, аналогичной вашей, например. Я использовал все свои дескрипторы открытых файлов.
Вы можете получить такую ошибку:
MySQL: код ошибки: 24 при использовании LOCK TABLES
... наряду с другими ошибками, когда вы обновляетесь до MySQL 5.5 и выполняете резервное копирование в Plesk или любой другой ОС, выполняющей mysqldump
.
Исправить:
my.cnf
Добавить:
open_files_limit=2048
Перезагрузите MySQL
Если вы получаете:
Не удается загрузить из mysql.proc. Таблица, вероятно, повреждена (1548)
Это результат обновления до 5.5. Выполнить:
mysql_upgrade --force
Протестировано и работает на CentOS 6.7 и Plesk 12.
У меня была такая же проблема, как и у Филиппа. При запуске дампа я увидел такую ошибку:
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