Heim  >  Artikel  >  Betrieb und Instandhaltung  >  xtrabackup Backup und Wiederherstellung, Funktionsprinzip

xtrabackup Backup und Wiederherstellung, Funktionsprinzip

PHP中文网
PHP中文网Original
2017-06-20 13:14:132223Durchsuche

Physisches Backup von XtraBackup

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

    Sparen Sie Speicherplatz und Netzwerkbandbreite
  • Automatische Backup-Überprüfung
  • Erstellen Sie Hot-InnoDB-Backups, ohne die Datenbank anzuhalten
  • Inkrementelles Backup von MySQL erstellen
  • Komprimiertes MySQL-Backup auf einen anderen Server komprimieren
  • Tabellen zwischen MySQL-Servern verschieben
  • Erstellen Sie ganz einfach einen neuen MySQL-Master-Slave
  • Sichern Sie MySQL, ohne den Server zu belasten
  • Percona XtraBackup erstellt MySQL-Hot-Backups, komprimierte und inkrementelle MySQL-Backups für alle Versionen von Percona Server, MySQL und MariaDB. Percona XtraBackup funktioniert mit MySQL, MariaDB und Percona Server. Es unterstützt die vollständig nicht blockierende Sicherung der Speicher-Engines InnoDB, XtraDB und HailDB.
  • So funktioniert Percona XtraBackup

  • Percona XtraBackup ist eine Crash-Recovery-Funktion basierend auf InnoDB. Kopiert InnoDB-Datendateien, was zu intern inkonsistenten Daten führt. Anschließend führt es jedoch eine Absturzwiederherstellung für die Dateien durch, wodurch sie wieder zu einer konsistenten, verwendbaren Datenbank werden.
  • 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 beginnt mit der Aufzeichnung der Protokollsequenznummer (LSN) und kopiert dann die Datendateien. Dies dauert nur kurze Zeit. Wenn sich die Dateien also ändern, spiegeln sie den Zustand der Datenbank zu unterschiedlichen Zeitpunkten wider. Gleichzeitig führt Percona XtraBackup einen Hintergrundprozess aus, der Transaktionsprotokolldateien überwacht und Änderungen daraus kopiert. Percona XtraBackup muss dies ständig tun, da Transaktionsprotokolle zirkulär geschrieben werden und nach einer gewissen Zeit wiederverwendet werden können. Percona XtraBackup erfordert eine Transaktionsprotokollierung für jede Änderung seit Beginn der Ausführung der Datendateien.

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.

HINWEIS

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

XtraBackup installieren

XtraBackup-Quelle installieren

[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/backup
Inkrementelle Sicherung

Hinweis: 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/backup
Verwenden Sie Mysqldump für die logische Sicherung

Als 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-transaction
Fall: Alle Bibliotheken lokal sichern

mysqldump -u root -p密码 --all-databases > ./all.sql
Fall : Alle Bibliotheken lokal wiederherstellen

mysql -u root -p密码  < ./all.sql
Fall: Die lokalen db1- und db2-Bibliotheken sichern

mysqldump -u root -p密码 --databases db1 db2 > ./db1_2.sql
Fall: Die lokalen db1- und db2-Bibliotheken wiederherstellen

mysql -u root -p密码 db1 db2 < ./db1_2.sql
Fall: 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 yun
Fall: 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn