Unzählige Tipps & Tricks kursieren im Internet, wie man denn am besten von einem Server auf dem man SSH-Zugriff einen Dump einer MySQL-Datenbank erstellt. Spätestens wenn man dies regelmäßig tun will kommt man an ein paar vernünftig strukturieren Skriptzeilen nicht vorbei.
Ein ähnliches Problem stellte sich bei der Erneuerung der Infrastruktur unseres Webhostings. Wir haben einen Backup-Server, der sich das Daten-Backup nächtlich vom Webserver abholt. Doch wie macht man nun am besten die Dumps von einem der MySQL-Master-Systeme? Da diese in einem internenen Management-Netz stehen hätte man natürlich einfach nativ mit einem MySQL oder PostgreSQL-Client vom Backupserver darauf zugreifen können, hätte sich dann aber trotzdem was skripten müssen, dass keinen kompletten Dump, sondern einzelne Dumps der Datenbanken erstellt. Letztere waren die Bedingung ans Restore - wenn jemand seine einzelne Datenbank restauriert haben möchte ist ein kompletter Dump mit mehreren Gigabyte nicht unbedingt der Weisheit letzter Schluss Und die Clients wollte man auch nicht zwingend auf dem Backupserver...
Nach anfänglich 2 getrennten Skripten für MySQL und PostgreSQL wurde irgendwann der Entschluss gefasst, dass jetzt mal ordentlich zu machen. Entstanden ist daraus sql-ssh-backup - mittlerweile in Version 1.8 - ein Tool um komfortabel MySQL- oder PostgreSQL-Dumps per SSH zu erstellen. Dabei verwenden wir die auf den zu sichernden Systemen vorhandenen Datenbank-Tools (mysqldump, pgdump) und leiten die Daten gesichert auf den Backupserver. Diese werden anschließend grundlegend geprüft und bei Bedarf gepackt. Im Laufe der Zeit hat dann die ein oder andere Erweiterung noch Einzug gehalten und für neue Ideen, Patches oder Fehlerberichte sind wir immer offen. Diese kann man gern an webserver@fem.tu-ilmenau.de senden.
Die Features in der Übersicht:
- Dump für MySQL und PostgreSQL via SSH
- benötigt kein MySQL/PostgreSQL auf dem Backup-Server
- sichere Übertragung/Nutzung der Datenbank-Zugangsdaten möglich
- Einzel- oder Gesamtsicherung aller Datenbanken
- Sicherung einzelner Datenbanken
- Kompression der Dumps mit bzip2/xz (MySQL) oder PosgreSQL-Dump-Format möglich
- mehrere Backups täglich möglich (Verzeichnisstruktur enthält dann Uhrzeit)
- automatische Bereinigung von alten Backups
Das unter der GPL-2 lizensierte Skript steht im FeM-Subversion zur Verfügung:
http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/app-backup/sql-ssh-backup/files/
Und für die Freunde eines "Copy'n'Paste"-HowTo gibt es eine ausführliche Anleitung in unserem Wiki, die auch erklärt, wie der Backup-Nutzer angelegt wird und welche Datenbank-Rechte er benötigt:
http://wiki.fem.tu-ilmenau.de/public/technik/howto/sql-ssh-backup
Viel Spaß damit.
Trackbacks