Wer kennt das Problem nicht: Man will “mal eben” seine 200GB große Datenbank auf einen neuen Server kopieren, aber die Zeit ist knapp.
Zugegeben, so oft kommt das dann doch nicht vor. Spätestens aber, wenn man einen neuen Slave zu seinem MySQL-Cluster hinzufügen will, kommt man nicht drum herum diese Daten zu kopieren. Mit den üblichen Tools wie rsync oder scp dauert der Vorgang allerdings relativ lange. Um den Kopiervorgang zu beschleunigen, greife ich hier auf altbekannte Tools zurück: ‘netcat’ und ‘tar’
Auf der Empfängerseite lassen wir netcat auf einem Port unserer Wahl lauschen. Alles was Empfangen wird, wird mit tar in das aktuelle Verzeichnis entpackt:
cd /var/lib/mysql netcat -l -p 8888 | tar x
Die Senderseite verpackt die Daten wiederrum und schickt sie übers Netzwerk zum anderen Server
cd /var/lib/mysql tar cf - ./* | netcat 192.168.2.1 8888
Wer möchte, kann abschliesend trotzdem noch mal einen rsync laufen lassen. Dieser sollte zwar nichts mehr kopieren, prüft aber zumindest ob wirklich alle Dateien synchronisiert wurden.
Besonders wenn die Server direkt miteinander Verbunden sind, wie es bei Clustern oft der Fall ist, erreicht man hier sehr gute Übertragungsraten. Netcat lässt sich auch schön mit ‘dd’ verbinden. Ganze Festplatten übers Netzwerk zu kopieren ist dann kein Problem mehr.
0 Comments