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