MySQL: Automatisierte inkrementelle Backups von InnoDB-Tabellen - mysql, backup, innodb

Ich weiß, es gab ähnliche / verwandte Fragen zu SO und anderswo, und ich denke zumindest, dass ich die verschiedenen Optionen verstehe.

Wir haben eine größere MySQL (Community Edition) dbmit InnoDB-Tabellen. Ich würde gerne täglich Shapshots von der DB machen, um sie außerhalb der Site zu sichern. Zurzeit verwende ich ein mysqldump-Skript, das von cron.daily ausgeführt wird. Es dauert jedoch 3 Stunden, um die Kopie zu schreiben. Also - inkrementell muss es sein.

Da wir Community Edition sind und es sich nicht leisten könnenEnterprise haben wir keine InnoDB-Hotcopy, die eine praktikable Lösung wäre, da sie nicht blockiert ist. Die andere Option ist die Binär-Protokollierung und inkrementelle Updates. Aber das scheint wie ein kolossaler Schmerz und fehleranfällig: Spülen und rotierende Protokolle , Zeitstempel aufzeichnen usw. Der Ratschlag scheint dies möglichst zu vermeiden.

Die letzte Option ist die Einrichtung der Replikation mit einer Master-Slave-Konfiguration. Ich habe die Dokumente gescannt, bin mir aber nicht sicher, was einen "Master" ausmacht und was einen "Slave" ausmacht. Also ein paar Fragen:

  • Ist ein Slave ein separater mysqld Prozess?
  • Kann der Slave auf demselben Rechner wie der Master laufen?
  • Ist nach dem Einrichten und Ausführen ein Eingriff erforderlich, oder wird der Master alle Updates originalgetreu übertragen?
  • Um meine Backups zu erstellen, ohne den Master zu beeinflussen, kann ich vermutlich nur mysqldump auf dem Slave ausführen.
  • Und schließlich, ist dies eine vernünftige Lösung, um eine Sicherungskopie für Off-Site-Kopien zu erstellen?

Danke, Richard

Antworten:

2 für die Antwort № 1

Ist ein Slave ein separater mysqld Prozess?

es ist nicht notwendig, einen separaten mysql-Daemon zu verwenden,
In Master aktivieren Sie das Binärlog
Im Slave konfigurieren Sie das Relais-Fach und die relevanten Informationen zum Master
(sehen http://dev.mysql.com/doc/refman/5.0/de/replication-howto.html)

Kann der Slave auf demselben Rechner wie der Master laufen?

Ja aber tu das nicht ,
weil, sobald die Maschine abgestürzt ist,
Sowohl dein Meister als auch dein Sklave sind weg
(DTP)

Ist nach dem Einrichten und Ausführen ein Eingriff erforderlich, oder wird der Master alle Updates originalgetreu übertragen?

Meister wird treu alle Updates pushen,
Master protokolliert die write sqls in Binärlog,
und der Slave sollte das Binärlog erhalten (wie @Johan erklärte, es zieht vom Master)

jedoch,

  1. Die Tabellensperrung könnte zu einer Replikationsverzögerung am Slave führen
  2. Fail Write Abfrage, die am Slave nicht ausgeführt werden kann

Sie können Replikation behandeln ist nur eine Methode, die alle sqls auf Master ausführen lassen,
kopiere es auf Sklave,
und erneut in der Empfangsreihenfolge ausführen
(Dies ist, was Binärlog tut)

Um meine Backups zu erstellen, ohne den Master zu beeinflussen, kann ich vermutlich nur mysqldump auf dem Slave ausführen.

Natürlich ist das der Zweck, Sklaven zu haben
Allerdings wird es einige Verzögerungen geben ...
wenn du die Daten entlädst,
Sie könnten die Tabelle zum Schreiben blockieren (vorausgesetzt, innodb hat eine geringere Auswirkung),
während der Meister weiterschreiben könnte

Und schließlich, ist dies eine vernünftige Lösung, um eine Sicherungskopie für Off-Site-Kopien zu erstellen?

Ja, dies wird als Mysql Disaster Recovery betrachtet


1 für die Antwort № 2

Ist ein Slave ein separater mysqld Prozess?

Es kann sein, aber es ist häufiger ein separater MySQL-Server, der auf einem anderen Rechner installiert ist.

Kann der Slave auf demselben Rechner wie der Master laufen?

Ja, wenn Sie müssen, weisen Sie ihm einfach eine andere Portnummer und eine andere server_id zu.
Beachten Sie, dass es kein großes Backup ist, wenn es sich auf demselben Computer befindet.

Ist nach dem Einrichten und Ausführen ein Eingriff erforderlich, oder wird der Master alle Updates originalgetreu übertragen?

Der Meister nicht push irgendetwas, der Sklave pulls die Aktualisierungen.

Um meine Backups zu erstellen, ohne den Master zu beeinflussen, kann ich vermutlich nur mysqldump auf dem Slave ausführen.

Ja, aber wenn Master und Slave auf demselben Computer ausgeführt werden, wird mysqldunmp ausgeführt werden verlangsamen diesen Server.

Und schließlich, ist dies eine vernünftige Lösung, um eine Sicherungskopie für Off-Site-Kopien zu erstellen?

Ja, außerhalb der Baustelle ist das Schlüsselwort hier.
Ich würde den Slave außerhalb des Standorts platzieren, was mehr Sinn macht, als den Slave auf demselben Rechner zu haben.

Hier ist ein Tutorial
http://www.howtoforge.com/mysql_master_master_replication


Speisekarte