Soll ich mysqldump oder mysqlhotcopy für MySQL-Datenbanksicherungen verwenden?

14

Ich habe ein WordPress-Blog, das auf einer MySQL-Datenbank läuft, die ich regelmäßig sichern möchte. Wäre es besser, das mysqldump-Programm oder das mysqlhotcopy-Skript zu verwenden, um Backups zu erstellen? Was sind die Vor- und Nachteile von jedem? Gibt es noch andere Optionen, die ich in Betracht ziehen sollte?

Matthew Shanley
quelle

Antworten:

5

Ich kann Ihnen sagen, dass ich derzeit mysqldump verwende, um eine Sicherungskopie meiner Datenbank zu erstellen. Ich mache das, weil mein Ziel darin besteht, wöchentliche Backups zu erstellen, damit ich sie für den Fall, dass jemand seine Webseite (n) entfernt, spätestens vor einer Woche wiederherstellen kann.

Das Gute daran ist, dass es sich um eine einfache Textdatei handelt, mit der ich sie auf jeden Computer mit MySQL importieren, laden und nach den fehlenden Daten suchen kann. Hinweis: Um das zu bekommen, was ich wollte, benutze ich folgenden Befehl in meinem Skript:

mysqldump --databases databaseName > /file/path

Das --databasesist es, was mysqldump dazu bringt, die CREATE DATABASE IF NOT EXISTHeader zu sichern, damit ich sie importieren kann, wo immer ich will.

Während diese Methode für mich funktioniert, bin ich sicher, dass es bessere Methoden für andere Zwecke gibt. Ich kann auch sagen, dass Sie, wie bei jeder Backup-Lösung, diese zumindest auf einem anderen Computer und vorzugsweise außerhalb (unserer in der Cloud) speichern sollten, wenn Sie können.

Mike
quelle
5

Ich würde in Betracht ziehen, ein WordPress-Plugin mit dem Namen "WordPress Database Backup (WP-DB-Backup)" zu verwenden, das auch im Wordpress Database Backup- Handbuch aufgeführt ist . Dieses Plugin kann die Datenbank nach einem Zeitplan sichern und per E-Mail an Sie senden (vorausgesetzt, es handelt sich um eine kleine Datenbank). Sie können es auch einfach lokal sichern. Sie können Kommentar-Spam und Überarbeitungen ausschließen, um die Datenbank zu verkleinern

Weniger Kontrolle, aber einfacher zu implementieren.

MySQL-Dumps geben Ihnen die meiste Kontrolle . Ihr Hosting-Service kann auch ein begrenzender Faktor sein. Einige Hosts geben Ihnen keinen Zugriff, um Cron-Jobs auszuführen oder den Befehl mysqldump auszuführen.

citadelgrad
quelle
4

VORSCHLAG # 1

Wenn Sie Sicherungen der MySQL-Instanz durchführen, ist es am besten, MySQL Replicaton so einzurichten, dass die Belastung des Servers oder die Erhöhung der Datenträger-E / A keine Auswirkungen auf Ihre Produktionsdatenbank hat.

Sobald Sie MySQL Replication eingerichtet haben, können Sie einen mysqldump auf verschiedene Arten skripten ( Informationen zu den verschiedenen Techniken finden Sie in meinem Post auf DBA StackExchange ), solange Sie diese mysqldumps auf einem Slave ausführen.

VORSCHLAG # 2

Wenn Sie keinen anderen Server für MySQL Replication einrichten können und alle Ihre Daten InnoDB sind, müssen Sie zu einem bestimmten Zeitpunkt einen mysqldump ausführen. Dies geschieht mit der --single-transactionOption mysqldump. Wenn Sie also einen mysqldump ab Mitternacht ausgeführt haben und die Sicherung um 00:15 Uhr endete, spiegeln die wiederhergestellten Ausgaben des mysqldump die Daten ab 12:00 Uhr wieder.

VORSCHLAG # 3

Ein weiteres für MySQL Backups verfügbares Programm ist XtraBackup von Percona.

XtraBackup ist ein umfassendes Tool, das sich wie Rsync verhält, aber einen bestimmten Zweck im Leben hat. Es kann mit dem Kopieren aller InnoDB-Daten und -Tabellenbereiche beginnen. Es kann Checkpoints intern erstellen und an Ort und Stelle eine Wiederherstellung nach einem Absturz von InnoDB durchführen, um eine perfekte Sicherung zu einem bestimmten Zeitpunkt zu erzielen. XtraBackup verfügt außerdem über eine zusätzliche Funktion, mit der inkrementelle Sicherungen erstellt werden können. Eine weitere zusätzliche Funktion ist die Erstellung von InnoDB-Protokolldateien, die ebenfalls durch eine direkte Wiederherstellung nach einem Absturz erstellt wurden. Es gibt auch eine Wrapper-Software, mit der MyISAM-Tabellen eingefroren kopiert werden können.

Es führt eine Zurücksetzung der MySQL-Instanz durch, jedoch mit einem deutlichen Unterschied. Der Zeitpunkt der Sicherung basiert eher auf dem Zeitpunkt, zu dem die Sicherung abgeschlossen wurde, als auf dem Zeitpunkt, zu dem sie gestartet wurde. Wenn Sie also XtraBackup ab Mitternacht ausgeführt haben und die Sicherung um 00:15 Uhr endete, spiegeln die wiederhergestellten Ausgaben von mysqldump die Daten ab 00:15 Uhr wieder.

RolandoMySQLDBA
quelle
2

Hängt von Ihrer Speicher-Engine für Ihre Tabellen ab. Es funktioniert nur für ARCHIVE- und MyISAM-Tabellen gemäß dieser MySQL-Handbuchseite und muss auf demselben Computer ausgeführt werden (dh es wird kein lokaler Socket oder TCP / IP verwendet).

MySQL sagt auch

Wenn Sie eine Sicherung auf dem Server durchführen und alle Ihre Tabellen MyISAM-Tabellen sind, sollten Sie stattdessen mysqlhotcopy verwenden, da dadurch schnellere Sicherungen und Wiederherstellungen durchgeführt werden können.

Aiden Bell
quelle
1

Ich empfehle, eines der vielen bereits vorhandenen mySQL-Backup-Skripte zu verwenden, um das Problem zu lösen.

Ich verwende "automysqlbackup", ein Open-Source-Shell-Skript, das als Cron-Job auf dem Server festgelegt werden kann. Es deckt nahezu alle denkbaren Sicherungs Situation: http://sourceforge.net/projects/automysqlbackup/ . Es hat für mich seit mehreren Jahren einwandfrei funktioniert - sehr zu empfehlen.

Mark Hatton
quelle
1

mysqlhotcopy ist ein Perl-Skript um '05. Es fügt also Abhängigkeiten für Perl und verschiedene Perl hinzu. Ich würde diesen weitergeben.

mysqldump ist ein C-Programm, das mit MySQL verteilt und aktiv gepflegt wird. Wenn Sie die Option -x hinzufügen, werden die Tabellen gesperrt, sodass Sie golden sind.

Ich persönlich habe dieses Drehbuch in cron (Sie möchten diese Escapes entfernen, wenn Sie es von Hand ausführen möchten) und es funktioniert wie ein Zauber für mich, indem ich jede meiner Datenbanken in einer lokalen Datei sowie in einer lokalen Datei sichern möchte ein vollständiger Dump aller Datenbanken.

Und wenn Sie dort mehr als eine Datenbank haben, möchten Sie auch die Zuschüsse für sie ausgeben. Maatkit hilft Ihnen dabei und Sie müssen nur mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sqlIhre Grant-Tabellen sichern und wieder importieren.

intlect
quelle
0

Ich weiß auch, dass eine Reihe von Serververwaltungstools wie Interworx und Ensim mysqldump verwenden, um die Datenbanken zu sichern, und dann einen einfachen mysql-Befehl zum Wiederherstellen. Daraus würde ich schließen, dass dies einer der besten Wege ist.

Darryl Hein
quelle