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.

Blerim Sheqa
Blerim Sheqa
Product Manager

Blerim ist seit 2013 bei NETWAYS und seitdem schon viel in der Firma rum gekommen. Neben dem Support und diversen internen Projekten hat er auch im Team Infrastruktur tatkräftig mitgewirkt. Hin und wieder lässt er sich auch den ein oder anderen Consulting Termin nicht entgehen. Mittlerweile kümmert sich Blerim hauptsächlich im Icinga Umfeld um die technischen Partner und deren Integrationen in Verbindung mit Icinga 2.