MySQL hat den Verbindungsfehler auf mysqldump verloren

7

Ich habe eine MySQL-Datenbank mit 1 TB, die ich sichern und neu laden möchte. Die meisten Daten befinden sich in einer Tabelle. Viele Daten wurden gelöscht, daher bin ich mir ziemlich sicher, dass die Gesamtgröße kleiner ist, wenn ich sie mit MySQL speichere, die Datenbank neu erstelle und sie dann neu lade.

Ich speichere die Daten mit diesem Befehl:

mysqldump  -uroot -pXXX  mydb | gzip -c > data.sql.gz

Ich bekomme diesen Fehler

 mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `MY_TABLE` at row: 596089342

Ich habe viele Variationen ausprobiert, darunter das Erhöhen der Paketgröße, das Durchführen einer einzelnen Übersetzung und das Übergehen von TCP / IP anstelle des lokalen Sockets.

mysqldump  -uroot -pXXX -h 127.0.0.1 --max-allowed-packet=1024M  --single-transaction mydb | gzip -c > data.sql.gz

Schließlich habe ich sogar den Befehl nach / dev / null ausgeführt, um sicherzustellen, dass es sich nicht um gzip handelt. Alle Permutationen erzeugen den gleichen Fehler.

mysqldump  -uroot -pXXX -h 127.0.0.1 mydb > /dev/null

Hier sind einige Einstellungen in my.cnf

max_allowed_packet = 1G
interactive_timeout = 600
wait_timeout = 600
net_read_timeout=600
net_write_timeout=600
connect_timeout=600

Eine andere seltsame Sache ist, dass der Dump immer an derselben Stelle anhält. Ungefähr 6 GB komprimierte Daten und ungefähr derselbe Datensatz. Wenn ich ls -l mache, ist die Dateigröße immer identisch.

Ich bin ratlos. Anregungen für die nächsten Schritte?

Für die Aufzeichnung ist dies MySQL 5.1.58, das unter Ubuntu 11.10 ausgeführt wird

WERDEN

Will Glass
quelle
Versuchen: Wiederherstellung interactive_timeoutund wait_timeoutauf die Standardwerte oder eine benannte Pipe.
Michael Hampton
Gibt es Fehler im Serverprotokoll? Haben Sie einen Dump über phpmyadmin versucht?
Jure1873
Dies ist ein Linux-Server. Was ist eine Pfeife? (Ist das nicht nur Windows).
Will Glass
Keine Fehler im Protokoll.
Will Glass
Ich habe es erneut versucht, nachdem ich interactive_timeout und wait_timeout auf ihre Standardwerte zurückgesetzt habe, und habe das gleiche Ergebnis erhalten.
Will Glass

Antworten:

4

Am Ende sieht es so aus, als hätte ich eine Datenbeschädigung. Ich hatte zwei Bände (EC2 ebs) kopiert, die mit LVM verknüpft waren. Möglicherweise habe ich das Volume beim Erstellen der Kopie nicht ordnungsgemäß eingefroren, und ich vermute, dass sie nicht ordnungsgemäß synchronisiert wurden. Ich habe mit meinen ursprünglichen Volumes begonnen, die Prozedur erneut ausgeführt, das xfs-Volume sorgfältig eingefroren, bevor ich den EC2-Snapshot erstellt habe, und dann die Kopien auf meinen neuen Server geladen, und es hat einwandfrei funktioniert.

Will Glass
quelle
0

Haben Sie versucht, die Socket-Datei zu verwenden, um die TCP / IP-Schicht zu umgehen, z

# Find the socket file e.g.
$ grep  "^socket"  /etc/my.cnf
socket      = /var/lib/mysql/mysql.sock
#
# Plug the filename into the mysqldump
$ mysqldump  --socket=/var/lib/mysql/mysql.sock -uroot mydb | gzip -c > data.sql.gz
arober11
quelle
Gleicher Fehler. mysqldump --socket = / var / run / mysqld / mysqld.sock mydb erzeugt mysqldump: Fehler: 2013: Verbindung zum MySQL-Server während der Abfrage beim Abrufen von Daten vom Server unterbrochen
Will Glass
Ich schlage vor, Sie fügen Ihr Problem dem folgenden Fehlerbericht hinzu , da Sie das Problem immer noch haben.
arober11
Welcher Fehlerbericht?
Will Glass
"Bug" ist ein Hyperlink (Techie-Internet-Begriff, erfunden in den 1980er Jahren). Wenn Sie auf das Wort "klicken", werden Sie auf eine andere Webseite weitergeleitet: o)
arober11
Ich habe es nicht bemerkt. Sie sollten Hyperlinks ohne Unterstreichungen verbieten.
Will Glass
0

Ich habe den gleichen Fehler erhalten, der Server hatte keinen RAM mehr zur Verfügung und keinen Swap. Mysqldump aß den ganzen RAM, also verringerte ich die speicherbezogenen Parameter in my.ini wie funktioniert

lhenry2k
quelle