Frage Keine Ressourcen für mysqldump mehr


Ich versuche einen mysqldump auf einem Windows Server und ich bekomme folgendes Fehlermeldung :

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

Hier ist die Befehl Ich renne :

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

Neustart des MySQL-Dienstes hat nicht geholfen.

Ich bekomme immer die Nachricht für die gleiche Tabelle.

Ich habe versucht, das zu reduzieren Tabellencache und max_verbindungen Variablen von 64 bis 32 und 30 bis 10, aber ich bekomme immer noch den Fehler für eine andere Tabelle (und von nun an erwähnt die Fehlermeldung immer die zweite Tabelle).

Dasselbe Skript läuft auf einem Dutzend anderer Windows Server mit derselben Datenbank ohne Probleme.

Alle Datenbanken haben 85 Tabellen.


21
2018-01-20 14:58


Ursprung


Auf welchem ​​Betriebssystem läuft MySQL? - davey
Windows überall. - Philippe Carriere
Wie viele Tabellen in der DB? Scheint wie eine Art Dateibeschreibungslimit. - davey
85 Tabellen in der DB. - Philippe Carriere
Informationen zur Beschreibung hinzugefügt. - Philippe Carriere


Antworten:


Gemäß Hier - "OS-Fehlercode 24: Zu viele offene Dateien", der mit dem allgemeineren Fehler 23 "Nicht genügend Ressourcen" übereinstimmt.

So scheint es, als ob Sie keine Dateigriffe mehr haben. Dies ist normalerweise die Server-Endeinstellung / das Problem, entweder in MySQL oder im Betriebssystem selbst.

Vielleicht prüfen / justieren Sie die --open-files-limit Rahmen in MySQL selbst und sehen, ob das hilft.

Versuchen Sie vielleicht auch, den Dump auszuführen, während niemand sonst die DB verwendet --single-transaction Rahmen anstatt --Lock-File, wie mehrere Leute vorschlagen, dass dies eine Tabelle zu einer Zeit arbeiten wird, anstatt sie alle auf einmal zu öffnen (daher weniger Dateigriffe verwendend).

Darüber hinaus müssen Sie wahrscheinlich eine Ursache dafür finden, warum auf diesem Server die Ressourcen knapp werden. Dies würde wahrscheinlich die Fehlerbehebung zur Folge haben, indem so viele Dienste / Prozesse wie möglich deaktiviert werden und überprüft wird, ob der Dump durchgeht. Dann finde heraus, wer der Schuldige ist, dass er zu viele Ressourcen isst und sie vielleicht nicht richtig befreit.


20
2018-01-20 17:25



--eine einzelne Transaktion anstelle von --lock-Tabellen funktioniert. Danke vielmals. - Philippe Carriere
Seltsamerweise verwende ich nicht InnoDB, aber es funktioniert nicht ohne diesen Parameter. Ich dachte - Single-Transaktion war nur relevant mit InnoDB. - Philippe Carriere
Nett. :) Froh, dass es geholfen hat. - techie007
--lock-all-tables funktioniert auch und hat nicht die Inkonsistenzprobleme von --single-transaction wenn Sie an Nicht-InnoDB-Tabellen arbeiten. - freiheit
Nur um klarzustellen: --single-transaction Kräfte --lock-tables=off. Verwenden Sie das nicht für nicht transaktionale Tabellen. - b2ag


Sind Sie in der Lage, es mit zu versuchen? --single-transaction anstatt --lock-tables z.B. Die Tabellen sind InnoDB und Sie verwenden keine Cluster-Tabellen, und ALTER TABLE, DROP TABLE, RENAME TABLE und TRUNCATE TABLE werden während des Speicherauszugs nicht ausgeführt. Am besten bestätigen Sie, dass dies mit Ihrer MySQL-Support-Organisation in Ordnung ist, wenn Sie eine haben.

Ich habe das nur auf Unix versucht, aber im Grunde, wenn ich mit einer Datenbank mit 2000 Tabellen versuche, scheitert es mit einem ähnlichen Fehler wie z. Ich habe alle meine geöffneten Dateigriffe verwendet.


5
2018-01-20 18:43



+1. Deine Lösung war genauso wie techie007, aber er antwortete zuerst, also akzeptiere ich seine Antwort. Für die Aufzeichnungen verwende ich nicht innoDB. - Philippe Carriere


Sie können diesen Fehler erhalten:

MySQL: Errcode: 24 bei Verwendung von LOCK TABLES

... zusammen mit anderen Fehlern, wenn Sie auf MySQL 5.5 aktualisieren und Ihre Backups auf Plesk oder einem anderen Betriebssystem ausführen mysqldump.

Reparieren:

  1. Bearbeiten my.cnf
  2. Hinzufügen:

    open_files_limit=2048
    
  3. Starten Sie MySQL neu

Wenn Sie erhalten:

Kann nicht von mysql.proc geladen werden. Die Tabelle ist wahrscheinlich beschädigt (1548)

Dies ist ein Ergebnis eines Upgrades auf 5.5. Ausführen:

mysql_upgrade --force

Getestet und arbeitete an CentOS 6.7 und Plesk 12.


2
2017-10-19 16:09