Ich habe eine Datenbank installiert, die ich in MySQL sichern möchte. Das Problem tritt mysqldump
beim Exportieren der Tabelle 'maia_mail' auf
# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15
Es läuft weniger als 30 Sekunden und zeigt Fehler wie oben an.
Die Gesamtgröße der Datenbank beträgt 1,3 GB, wobei die Tabelle maia_mail 1,0 GB beträgt
In my.cnf
diesem Set habe ich:
[mysqld]
max_allowed_packet = 1300M
[mysqldump]
max_allowed_packet = 1300M
Bitte geben Sie Ratschläge oder Anleitungen, wie Sie die Datenbank sichern können.
Antworten:
Ich könnte leicht vorschlagen, die InnoDB-Einstellungen zu ändern, was ein wenig umständlich sein könnte, nur um einen mysqldump zum Laufen zu bringen. Sie mögen vielleicht nicht, was ich über den Vorschlag bin, aber ich glaube, es ist Ihre beste (einzige) Option. Hier kommt's:
VORSCHLAG 1: Deaktivieren Sie erweiterte Einfügungen
Die Standardeinstellung für mysqldump würde das Zusammenfassen von Hunderten oder Tausenden von Zeilen in einem einzigen INSERT beinhalten. Dies wird als erweitertes INSERT bezeichnet. Es kommt zu einem Überlauf, der über das max_allowed_packet hinausgeht .
Ich beantwortete einen Beitrag wieder am
Sep 01, 2011
(der MySQL-Server hat den Import von großen Dumps behindert ), wo ich das Gleiche für den Import eines großen mysqldump besprochen habe. Ich glaube, dass das Deaktivieren von Extended INSERT auch beim Erstellen eines problematischen mysqldump helfen würde.Schlechte Nachrichten: Was dies bewirkt, ist das Erstellen eines INSERT-Befehls für jede Zeile. Dies wird definitiv die Zeit verlängern, die benötigt wird, um den mysqldump auszuführen. Folglich wird es auch länger dauern, bis das Nachladen abgeschlossen ist (wahrscheinlich um den Faktor 10-100).
Ich habe
skip-extended-insert
vorher diskutiertAug 12, 2011
: Warum ist die mysqldump-Datei so groß?Aug 09, 2013
: Das Sichern / Exportieren von Daten aus der MySQL 5.5-Anhangstabelle schlägt weiterhin fehl!Nov 16, 2014
: Wie kann ich mit MySQL mehrere Einfügeanweisungen für den Datenbankspeicherauszug stapeln?VORSCHLAG 2: Binärdaten als Hex (OPTIONAL) ausgeben
Um die Binärdaten des mysqldump portabler zu machen, speichern Sie diese Daten hexadezimal
Schlechte Nachrichten: Es wird den mysqldump ein bisschen mehr aufblähen
VERSUCHE ES !!!
Randnotiz : Die maximale Größe von max_allowed_packet beträgt 1 GB
quelle
Beim Versuch, eine 12-GB-Datenbank zu sichern, trat derselbe Fehler auf. Ich habe die folgenden Änderungen vorgenommen, damit es funktioniert.
Hinweis: Ich weiß, dass die Timeout-Werte viel zu hoch sind (7200 Sekunden, dh 20 Stunden). Aber ich tat es absichtlich, um jede Chance auszuschließen. Ich bin dabei, einen optimalen Timeout-Wert zu finden.
quelle
Fügen Sie einfach Folgendes in Ihre Konfigurationsdatei my.ini (Windows) oder my.cnf (Linux) ein.
quelle
Stellen Sie sicher, dass Sie über genügend Speicher verfügen, um Speicherauszüge zu erstellen. Bitte überprüfen Sie den Speicher während des Dumps, zB mit einem Befehl wie diesem:
Wenn Sie während der Dump-Einnahme Speicherplatz erschöpfen, erhalten Sie
quelle
Ich fand:
... funktioniert dort, wo es vorher (zuverlässig) nicht funktioniert hat, trotz Änderungen des Lese- / Schreib-Timeouts, TCP-Keepalives usw.
Die
max_allowed_packet
Einstellungen alleine haben nicht funktioniert, daher sind sie möglicherweise nicht erforderlich, wenn sienet_buffer_length
verwendet werden. - Ralph-BoltonÄndern
max-allowed-packet
undnet-buffer-length
scheint viel besser zu sein, als erweiterte Einfügungen zu deaktivieren. - KristoferSiehe auch Was max_allowed_packet ist groß genug und warum muss ich es ändern?
quelle