Próbuję zrobić mysqldump na serwerze Windows i pojawia się następujący komunikat o błędzie :
mysqldump: Got error: 23: Out of resources when opening file '.\db\sometable.MYD' (Errcode: 24) when using LOCK TABLES
Oto polecenie, które uruchamiam:
mysqldump -u user -p"pass" --lock-tables --default-character-set=latin1 -e --quick databasename > "query.sql"
Ponowne uruchomienie usługi mysql nie pomogło.
Zawsze otrzymuję wiadomość dla tego samego stołu.
Próbowałem zmniejszyć zmienne table_cache i max_connections odpowiednio z 64 do 32 i 30 do 10, ale nadal otrzymuję błąd tylko tym razem dla innej tabeli (i odtąd komunikat o błędzie zawsze wspomina o drugiej tabeli).
Ten sam skrypt działa bez problemu na kilkunastu innych serwerach Windows posiadających tę samą bazę danych.
Wszystkie bazy danych mają 85 tabel.
Odpowiedzi:
Zgodnie z tym - „Kod błędu systemu operacyjnego 24: Zbyt wiele otwartych plików”, co odpowiada bardziej ogólnemu błędowi 23 „Brak zasobów”.
Wygląda więc na to, że brakuje Ci uchwytów plików. Zazwyczaj jest to ustawienie / problem po stronie serwera, albo w MySQL, albo w samym systemie operacyjnym.
Być może sprawdź / dostosuj
--open-files-limit
ustawienie w samym MySQL i sprawdź, czy to pomoże.Być może spróbuj uruchomić zrzut, podczas gdy nikt inny nie korzysta z DB, z
--single-transaction
ustawieniem zamiast--Lock-File
, ponieważ kilka osób sugeruje, że będzie to działało pojedynczo, zamiast otwierać je wszystkie naraz (w ten sposób używając mniej uchwytów plików).Poza tym prawdopodobnie będziesz musiał znaleźć podstawową przyczynę, dlaczego w tym konkretnym serwerze brakuje zasobów. Co prawdopodobnie wiązałoby się z rozwiązywaniem problemów poprzez wyłączenie jak największej liczby usług / procesów i sprawdzenie, czy zrzut zostanie wykonany. Następnie dowiedz się, kto jest winowajcą, który zjada zbyt wiele zasobów i być może nie uwalnia ich prawidłowo.
źródło
--lock-all-tables
działa również i nie ma problemów z niespójnością--single-transaction
podczas pracy na tabelach innych niż InnoDB.--single-transaction
siły--lock-tables=off
. Nie używaj tego w tabelach nietransakcyjnych.Czy jesteś w stanie wypróbować
--single-transaction
zamiast--lock-tables
np. Tabele to InnoDB i nie używasz tabel Cluster, a ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE nie wystąpi podczas zrzutu? Najlepiej potwierdź, że jest to w porządku z organizacją wspierającą MySQL, jeśli taką masz.Próbowałem tego tylko na Uniksie, ale w zasadzie, jeśli spróbuję z DB z tabelami 2000, to nie powiedzie się z błędem podobnym do twojego, np. Użyłem wszystkich moich otwartych uchwytów plików.
źródło
Możesz otrzymać ten błąd:
... wraz z innymi błędami podczas aktualizacji do MySQL 5.5 i uruchamiania kopii zapasowych w Plesk lub innym uruchomionym systemie operacyjnym
mysqldump
.Naprawić:
my.cnf
Dodaj:
Uruchom ponownie MySQL
Jeśli otrzymujesz:
Jest to wynikiem aktualizacji do wersji 5.5. Wykonać:
Testowane i działające na CentOS 6.7 i Plesk 12.
źródło
Miałem podobny problem jak Philipe. Po uruchomieniu zrzutu zobaczyłem taki błąd:
Użyłem prostej komendy:
Dodam więc kolejne polecenie do mojego mysqldump:
i zrzut jest gotowy. Tak więc moje całe zapytanie mysqldump wygląda następująco:
źródło