Wie kann ich Multi-Gigabyte-Datenbanken in MySQL sichern? Bonuspunkte für schnellere Wiederherstellungen

11

Ich habe eine 4 GB Datenbank in MySQL. Wie kann ich es sichern? Gibt es außerdem eine Möglichkeit, den Wiederherstellungsprozess zu beschleunigen, falls ich mich erholen muss?

Derzeit verwende ich jeden Abend einen Cron-Job, der anruft mysqldump, um alles zu sichern, und ich behalte 3 Tage lang Backups.

Nicudotro
quelle

Antworten:

14

Wir haben ungefähr 90 GB in einem MySQL, also hier einige Vorschläge:

  • Sie können den folgenden Aufruf versuchen: mysqldump -u USER -pPASS --single-transaction -Q --databases foo bar(Überprüfen Sie anhand der Dokumente, ob diese Schalter für Sie funktionieren.)
  • Wenn Sie nur MYISAM-Tabellen verwenden, kann es auch eine Alternative sein, die Datenbank auf ein anderes Laufwerk zu kopieren und zu tarieren. Dies funktioniert jedoch nicht mit INNODB, da eine zusätzliche Datei gespeichert wird. Außerdem müssen Sie dies sorgfältig testen.
  • Aktivieren Sie binäre Protokolle und sichern Sie sie. (Dies ist wahrscheinlich mein Favorit!)
  • Richten Sie die Replikation ein und führen Sie die Sicherung auf einem Ihrer Slaves durch. Lassen Sie sie dann den Rest einholen. Es ist ziemlich schön, wenn es läuft, aber das Problem ist, es zum Laufen zu bringen. Replizieren macht mit MySQL keinen Spaß. :(
  • Unterstützt Ihr Dateisystem Snapshots? Wenn ja, dann ist das eine großartige Gelegenheit, sie zu nutzen.
  • Verwenden Sie eine kommerzielle Lösung wie Amanda .
Bis
quelle
10

Der beste Weg wäre, den normalen Betrieb nicht zu unterbrechen. Für hochzuverlässige, fehlertolerante Systeme haben Sie 2 DBs, die synchron gehalten werden, und Sie sichern die sekundäre. (zB dieser Howtoforge-Artikel )

Lesen Sie andernfalls das Handbuch : Verwenden Sie myseldump wie derzeit oder das Skript mysqlhotcopy (genau wie mysqldump) oder stoppen Sie die Datenbank und kopieren Sie einfach die Dateien frm, MID und MYI (mit rsync).

Ich denke, der Mechanismus zum Stoppen und Kopieren von Dateien ist der schnellste, den Sie bekommen werden.

gbjbaanb
quelle
3

Wenn einige Ihrer Datenbanken schreibgeschützt oder geändert sind, wird sie selten als weniger häufig herausgegriffen.

JJ
quelle
2

Um Ihre Frage zu beantworten, funktioniert die Option extended_insert gut für mich. Wenn Sie über genügend Ressourcen zum Wiederherstellen verfügen, fügt extended_insert große Datenmengen in eine einzelne Abfrage ein, wodurch die Wiederherstellung beschleunigt wird.


quelle
1

Sie sollten Perconas Xtrabackup wirklich in Betracht ziehen

Das Wrapper-Skript "innobackupex" kann MyISAM verarbeiten, aber für eine nicht sperrende / Online-Sicherung sollten Ihre Tabellen alle InnoDB sein.

Prost

HTTP500
quelle