Heim > Artikel > Betrieb und Instandhaltung > xtrabackup Backup und Wiederherstellung, Funktionsprinzip
Percona XtraBackup ist die weltweit einzige kostenlose Open-Source-MySQL-Hot-Backup-Software, die nicht blockierende Backups für InnoDB- und XtraDB-Datenbanken durchführt. Mit Percona
So funktioniert Percona XtraBackup
Das liegt daran, dass InnoDB ein Redo-Log führt, auch bekannt als Transaktionslog. Dies enthält eine Aufzeichnung aller Änderungen an InnoDB-Daten. Wenn InnoDB startet, überprüft es die Datendateien und das Transaktionsprotokoll und führt zwei Schritte aus. Es wendet festgeschriebene Transaktionsprotokolleinträge auf die Datendateien an und führt Rückgängig-Vorgänge für alle Transaktionen durch, die die Daten geändert, aber nicht festgeschrieben haben.
Percona XtraBackup verwendet Backup Lock als einfache Alternative. Diese Funktion ist in Percona Server 5.6+ verfügbar. Percona XtraBackup nutzt dies, um Nicht-InnoDB-Daten automatisch zu kopieren, um das Blockieren von DML-Abfragen zu vermeiden, die InnoDB-Tabellen ändern. Wenn der Server Sicherungssperren unterstützt, kopiert xtrabackup zunächst die InnoDB-Daten, führt die MyISAM-Tabellen und .frm-Dateien aus und kopiert sie. Sobald der Vorgang abgeschlossen ist, beginnt die Sicherung der Dateien. Es werden .frm, .MRG, .MYD, .MYI, .TRG, FLUSH TABLES MIT READ LOCKLOCK TABLES FOR BACKUP.par gesichert.
Sperren gilt nur für MyISAM und andere nicht -InnoDB-Tabellen, erst nachdem Percona XtraBackup die Sicherung aller InnoDB/XtraDB-Daten und Protokolle abgeschlossen hat. Percona XtraBackup verwendet Backup Lock als einfache Alternative. Diese Funktion ist in Percona Server 5.6+ verfügbar. Percona XtraBackup nutzt dies, um Nicht-InnoDB-Daten automatisch zu kopieren, um das Blockieren von DML-Abfragen zu vermeiden, die InnoDB-Tabellen ändern. FLUSH TABLES WITH READ LOCK
Danach blockiert xtrabackup alle Vorgänge, die den Speicherort des Binärprotokolls oder den Bericht ändern könnten. Dann wird xtrabackup das Kopieren der REDO-Protokolldateien abschließen und die binären Protokollkoordinaten abrufen. Nachdem dies abgeschlossen ist, entsperrt xtrabackup das Binärprotokoll und die Tabellen. SPERRE BINLOG FÜR BACKUPExec_Master_Log_PosExec_Gtid_SetSHOW MASTER/SLAVE STATUS
Schließlich wird die Binärprotokollposition in STDERR gedruckt und xtrabackup wird beendet und gibt 0 zurück, wenn alles in Ordnung ist.
Es ist zu beachten, dass STDERRs xtrabackup in keine Datei geschrieben wird. Sie müssen es beispielsweise in eine Datei umleiten. xtrabackup OPTIONS2> backupout.log
Es werden außerdem die folgenden Dateien im gesicherten Verzeichnis erstellt.
Während der Vorbereitungsphase verwendet Percona XtraBackup die replizierten Transaktionsprotokolldateien, um eine Absturzwiederherstellung für die replizierten Datendateien durchzuführen. Sobald dies erledigt ist, kann die Datenbank wiederhergestellt und verwendet werden.
Die gesicherten MyISAM- und InnoDB-Tabellen werden schließlich miteinander konsistent sein, da die Daten von InnoDB nach dem Vorbereitungs- (Wiederherstellungs-)Prozess bis zu dem Punkt weitergeleitet werden, an dem die Sicherung abgeschlossen wurde, und nicht bis zu diesem Punkt zurückgesetzt werden wo es angefangen hat. Dieser Zeitpunkt stimmt mit der eingenommenen Position überein, sodass die MyISAM-Daten und die vorbereiteten InnoDB-Daten synchron sind. FLUSH TABLES WITHREAD LOCK
Kurz gesagt, mit diesen Tools können Sie Vorgänge wie Streaming und inkrementelle Sicherungen durchführen, indem Sie Datendateien kopieren, Protokolldateien kopieren und Protokolle auf verschiedene Datenkombinationen anwenden.
Backup wiederherstellen
Um ein Backup mit xtrabackup wiederherzustellen, können Sie die Option oder verwenden. xtrabackup –copy-backxtrabackup –move-back
xtrabackup liest aus den my.cnf-Variablen datadir, innodb_data_home_dir, innodb_data_file_path, innodb_log_group_home_dir und prüft, ob das Verzeichnis existiert.
Dadurch werden die MyISAM-Tabellen, Indizes usw. kopiert (.FRM-, .MRG-, .MYD-, .MYI-, .TRG-, .TRN-, .ARM-, .ARZ-, .CSM-, .CSV-, PAR- und .opt-Dateien). ) Zuerst sind der nächste Schritt in InnoDB Tabellen und Indizes und schließlich Protokolldateien. Dadurch bleiben die Attribute der Dateien beim Kopieren erhalten. Möglicherweise muss MySQL den Besitz der Dateien ändern, bevor der Datenbankserver gestartet wird, da sie dem Benutzer gehören, der die Sicherung erstellt hat.
Alternativ kann diese Option zum Wiederherstellen des Backups verwendet werden. Der einzige Unterschied bei dieser Option besteht darin, dass die Datei nicht kopiert, sondern an den Zielort verschoben wird. Da diese Option Sicherungsdateien löscht, muss sie mit Vorsicht verwendet werden. Diese Funktion ist in Situationen nützlich, in denen nicht genügend freier Speicherplatz zum Speichern von Datendateien und deren Sicherungskopien vorhanden ist. xtrabackup –move-backxtrabackup –copy-back
[root@ZHENGDA ~]# uname -r
3.10.0-327 .el7.x86_64
yum -y install
Installieren
yum -y install percona-xtrabackup-24
Verbindungsbenutzer erstellen und autorisieren
mysql> CREATE USER 'zhengda'@'localhost' IDENTIFIED BY 'goyun.org'; mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'zhengda'@'localhost'; mysql> FLUSH PRIVILEGES;
Vollständige Sicherung
(1) nur xtrabackup Es kann Tabellen der Innodb- und Xtradb-Engines sichern, jedoch nicht Tabellen der Myisam-Engine. (2) innobackupex ist ein Perl-Skript, das xtrabackup kapselt und die gleichzeitige Sicherung von Innodb und Myisam unterstützt, muss jedoch beim Sichern hinzugefügt werden up myisam. Eine globale Lesesperre. Außerdem unterstützt myisam keine inkrementelle Sicherung.
$ xtrabackup --user=zhengda --password=goyun.org --backup \ --target-dir=/data/backup $ innobackupex --user=zhengda --password=goyun.org /path/ to /backup/dir/ $ innobackupex --user=zhengda --password=goyun.org --stream=tar ./ | bzip2 -Sicherung auf /data/backup
备份所有库:$ innobackupex --defaults-file=/etc/my.cnf--user=zhengda \ --password=goyun.org --socket=/tmp/mysql.sock /data/backup 备份两个库:$ innobackupex --databases="db1 db2"--defaults-file=/etc/my.cnf--user=zhengda \ --password=goyun.org --socket=/tmp/mysql.sock /data/backupInkrementelle SicherungHinweis: Die erste inkrementelle Sicherung muss auf der vollständigen Sicherung basieren. Sie können
–incremental /data/backup1 geben Sie das Zielverzeichnis für den inkrementellen Backup-Speicher an
–incremental-basedir=/data/backup geben Sie das Verzeichnis für die vollständige Sicherung an
$ innobackupex --defaults-file=etc/my.cnf --user=zhengda --password=goyun.org \ --socket=/tmp/mysql.sock --incremental /data/backuup1 --incremental-basedir=/data/backup/#会根据当天时间生成个目录für das zweite Inkrement. Für die Sicherung, Sie Sie müssen das Verzeichnis der letzten inkrementellen Sicherung angeben
–incremental /data/backup2 Geben Sie das Verzeichnis dieser inkrementellen Sicherung an
–incremental-basedir=/data/backup1 Geben Sie das Verzeichnis der letzten inkrementellen Sicherung an
$ innobackupex --defaults-file=/etc/my.cnf --user=zhengda --password=goyun.org \ --socket=/tmp/mysql.sock --incremental /data/backup2 --incremental-basedir=/data/backup1/(....)Sicherung wiederherstellen–Apply-Log-Option zur Vorbereitung der Wiederherstellung der Sicherung
–use-memory=8G Legen Sie den Speicher fest, der bei der Vorbereitung der Datenwiederherstellung verwendet wird, was den Zeitaufwand für die Vorbereitung verkürzen kann
$ innobackupex --apply-log --use-memory=8G /data/backup #还原如下 $ innobackupex --defaults-file=/etc/my.cnf --user= --password= --copy-back /data/backup #或 $ xtrabackup --user=zhengda --password=goyun.org --copy-back --target-dir=/data/backupVerwenden Sie Mysqldump für die logische SicherungAls wichtiges MySQL-Sicherungstool ist mysqldump ziemlich leistungsfähig. Sicherungsparameter und Wiederherstellungsstrategien müssen sorgfältig untersucht werden. Datenbank sichern: Eine einzelne Datenbank oder eine bestimmte Tabelle in einer einzelnen Datenbank sichern: mysqldump [OPTIONS] Datenbank [tb1] [tb2]…Mehrere Datenbanken sichern: mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…]Alle Datenbanken sichern: mysqldump [OPTIONS ] –all-databases [OPTIONEN]Fügen Sie diese Option hinzu, um Tabellen beim Sichern nicht zu sperren
--single-transactionFall: Alle Bibliotheken lokal sichern
mysqldump -u root -p密码 --all-databases > ./all.sqlFall : Alle Bibliotheken lokal wiederherstellen
mysql -u root -p密码 < ./all.sqlFall: Die lokalen db1- und db2-Bibliotheken sichern
mysqldump -u root -p密码 --databases db1 db2 > ./db1_2.sqlFall: Die lokalen db1- und db2-Bibliotheken wiederherstellen
mysql -u root -p密码 db1 db2 < ./db1_2.sqlFall: Auf dem B-Host Führen Sie die Sicherung der Yun-Bibliothek von Host A auf Host B aus. Die Yun-Bibliothek muss auf Host B erstellt werden -C zeigt an, dass die Datenübertragung zwischen Hosts Datenkomprimierung verwendet
mysqldump --host=192.168.6.108(A) -u root -p密码 --opt yun | mysql --host=localhost(B) -u root -p密码 -C yunFall: Auf Host B ausführen, um alle Datenbanken auf Host A lokal zu sichern
mysqldump --host=192.168.6.108(A) -u root -p密码 --all-databases > all.sql(B)Fall: Wiederherstellen und Ausführen auf Host B
Das obige ist der detaillierte Inhalt vonxtrabackup Backup und Wiederherstellung, Funktionsprinzip. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!