Backup MySQL Server

13

Wie kann ein MySQL-Server am besten gesichert werden? Ich hätte gerne eine Methode, bei der der Server nicht heruntergefahren werden muss. Ist so etwas wie ein InnoDB-Hot-Backup erforderlich oder kann ich einfach die in den MySQL-Administrator-Tools bereitgestellten Backup-Tools verwenden? Welche Vorteile bietet eines gegenüber dem anderen?

Kibbee
quelle

Antworten:

12

Wir verwenden mysqldump, das funktioniert, während MySQL läuft. Wir haben mit mysqldump begonnen, weil es am einfachsten einzurichten war, wenn unsere Anforderungen klein waren, und es schien diese Anforderungen zu erfüllen. Unsere Datenbanken sind seitdem gewachsen, aber wir sind mysqldump noch nicht entwachsen. Ob es für Sie geeignet ist, hängt von der Größe Ihrer Datenbanken, der üblichen Betriebslast und wahrscheinlich von einigen anderen Faktoren ab.

TimB
quelle
mysqldump ist großartig. Im Gegensatz zu den Binär-Dumps einiger anderer RDMS sind die von mysqldump generierten Dateien standardmäßig Textdateien mit vollwertigen SQL-Befehlen - meist CREATE TABLE-Anweisungen und INSERTs für die Zeilen. Als einfache Textdateien können sie einfach manipuliert, komprimiert oder verschlüsselt werden.
Mittwoch,
3
mysqldump bricht zusammen, wenn Sie große Datenbanken haben und / oder wenn Sie sich auf MyISAM verlassen. Wir haben einige 400G-Datenbanken mit vielen Indizes, die beim Importieren des Dumps neu erstellt werden müssen, damit eine Wiederherstellung nach einer Sicherung drei Tage dauert. LVM-Snapshot bietet eine viel bessere Wiederherstellungszeit, wenn Sie aus mysqldump herausgewachsen sind.
Nils-Anders Nøttseter
4

Werfen Sie einen Blick auf xtrabackup von Percona - es ist eine interessante Open-Source-Alternative zu mysqlhotcopy für Innodb-Datenbanken.

Sie können mehr darüber lesen Sie hier

pQd
quelle
3

mysqldump kann verwendet werden, garantiert jedoch keine konsistente Datenmenge, es sei denn, Sie sperren alle Tabellen für die Dauer des Dumps. Dies versetzt die Datenbank in einen schreibgeschützten Modus, stellt jedoch sicher, dass der Speicherauszug konsistent ist.

Sie können die Tabellen mit dem folgenden Befehl sperren:

FLUSH TABLES WITH READ LOCK;

Und wenn Sie fertig sind, können Sie die Sperre aufheben mit:

UNLOCK TABLES;
Brent
quelle
7
mysqldump --single-transaction sorgt für einen konsistenten Schnappschuss
Dave Cheney
5
--single-transaction funktioniert nur, wenn alle Ihre Tabellen InnoDB sind. Die MyISAM-Tabellen unterstützen keine Transaktionen.
Nils-Anders Nøttseter
2

Richten Sie MySQL Replication ein . Als Bonus erhalten Sie einen Server, der umfangreiche Berichtsjobs und mysqldump ausführt, ohne Ihre Hauptproduktionsdatenbank zu beeinträchtigen.

Dave Cheney
quelle
Denken Sie daran, dass die Replikation möglicherweise verzögert ist und nicht unbedingt eine Sicherung Ihres Masters zu einem bestimmten Zeitpunkt erforderlich ist.
2
Die Replikation ist kein Backup. Wenn Sie versehentlich etwas im Master löschen, löscht der Slave es ebenfalls. Der Slave ist jedoch gut geeignet, um mysqldump zu verwenden, da dies keinen Einfluss auf Ihren Produktionsserver hat (wie von Dave erwähnt).
Martijn Heemels
0

Es gibt auch ein Tool namens mysqlhotcopy, das ich mir einmal angesehen habe und dachte, es sei vielversprechend - habe es aber nie benutzt.

Brent
quelle