Was ist der Unterschied zwischen XtraBackup und rsync?

11

Ja, ich werde sie beide belasten ... Aber ich würde gerne wissen ...

  • Was macht XtraBackup über rsync -ac src dest hinaus?
  • Was ist das Besondere an XtraBbackup?
  • Wie interagiert XtraBackup mit mysqld?
randomx
quelle
1
Dies ist eine der Fragen, die "Ich habe von XtraBackup gehört, aber ich habe Angst, Eisbrecher zu stellen". Ich liebe diese Art von Fragen !!! +1 !!!
RolandoMySQLDBA
1
@ RolandoMySQLDBA: Ich mag es, Gedanken anzuregen und Leute dazu zu bringen, Wissen zu teilen. So werden wir besser, oder? Ein einsamer Waldläufer zu sein macht nicht viel Spaß. :-)
randomx

Antworten:

16

rsync ist nur eine byteweise Brute-Force-Kopie von Daten von einem Ort zum anderen. Sie hätten bis zum letzten Rsync mehrere Rsyncs ausgeführt, was sehr schnell geht. Dann würden Sie MySQL vollständig herunterfahren und einen weiteren rsync ausführen.

XtraBackup ist ein umfassendes Tool, das sich wie rsync verhält, aber einen bestimmten Lebenszweck hat. Es kann mit dem Kopieren aller InnoDB-Daten und -Tabellenbereiche beginnen. Es bietet die Möglichkeit, intern Checkpoints zu erstellen und direkt eine InnoDB-Absturzwiederherstellung durchzuführen, um eine perfekte Sicherung zu einem bestimmten Zeitpunkt zu erhalten. 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 Absturzwiederherstellung erstellt wurden. Es gibt auch eine Wrapper-Software, mit der auch MyISAM-Tabellen eingefroren kopiert werden können.

Beide Methoden sind großartig. XtraBackup implementiert einfach InnoDB-Transaktionsfunktionen in den meisten anfänglichen Kopien. Xtrabackup erstellt Dateien, die in eine etablierte MySQL-Infrastruktur gestellt werden können. Fairerweise bietet XtraBackup instrumentelle Backups und materialisierte, sehr benutzerfreundliche InnoDB-Dateien.

Wenn Sie rsync verwenden, müssen Sie den Kopiervorgang mehrmals verwalten und mit einem MySQL-Herunterfahren abschließen, um einen Eingriff von rsync zu erfordern.

Die Verwendung einer über der anderen kann eine persönliche Präferenz sein. Eines muss beachtet werden: XtraBackup erstellt Backups, die etwas größer sind als die kopierten Daten. Ich überlasse die Wahl der Methode dem Leser dieser Frage.

Ich bevorzuge rsync, weil es einfach zu bedienen ist, ich kann den spezifischen Zeitpunkt bestimmen, bevor der Prozess beginnt, ich habe auch die vollständige Kontrolle darüber, ob mysqld gesperrt oder heruntergefahren wird, wann eine solche Steuerung durchgeführt werden kann und in welcher Reihenfolge ich sie benenne .

Beide Sicherungsstile haben eines gemeinsam : Bei XtraBackup ist der tatsächliche Zeitpunkt ein bewegliches Ziel, bis der Sicherungsprozess abgeschlossen ist und Sie XtraBackup vertrauen müssen (hey 200.000 Downloads bis jetzt. Facebook ist einer der größten Benutzer von es hat viel Vertrauen verdient). Mit anderen Worten, wenn ich XtraBackup um Mitternacht starte und die Sicherung bis 02:20 Uhr dauert, ist der tatsächliche Zeitpunkt der Sicherung 2:20 Uhr. Die Verwendung von rsync hat das gleiche Problem mit sich bewegenden Zielen, da Sie mehrere rsyncs manuell ausführen und dann bestimmen müssen, wann vor dem endgültigen rsync ein "Service-MySQL-Stopp" ausgegeben werden soll.

Diese Methoden unterscheiden sich darin, dass mysqld mit der rsync-Methode heruntergefahren werden muss , während XtraBackup unabhängig von mysqld agiert. Tatsächlich interagiert XtraBackup überhaupt nicht sehr stark mit mysqld, außer wenn MyISAM-Tabellen über die Wrapper-Software verarbeitet werden. XtraBackup versucht, voll funktionsfähige InnoDB-Daten und -Protokolldateien mithilfe von InnoDB-Speicher-Engine-Vorgängen zu erstellen, die von mysqld getrennt und verschieden sind.

Das Herunterfahren von MySQL ist für die rsync-Methode aus einem sehr wichtigen Grund sehr wichtig: Der InnoDB-Pufferpool kann "schmutzige Seiten" enthalten, dh Daten- und Indexseiten (1 Seite = 16 KB), die nicht auf die Festplatte zurückgeschrieben wurden. Durch die Verwendung von rsync werden die im InnoDB-Pufferpool anstehenden Datenänderungen nicht abgefangen. Führen Sie den folgenden Befehl aus, um das Herunterfahren von mysqld für den endgültigen rsync zu beschleunigen:

SET GLOBAL innodb_max_dirty_pages_pct = 0;

Dieser Befehl reduziert die Anzahl der schmutzigen Seiten auf ein Minimum. Dieser Befehl sollte ungefähr eine Stunde vor dem Ausführen der rsync-Sicherungsmethode ausgeführt werden. Dies könnte sogar XtraBackup helfen, obwohl XtraBackup kein Herunterfahren von MySQL erfordert.

RolandoMySQLDBA
quelle