Datenbank löschen und weglaufen? So sichern Sie die MySQL-Datenbank mit xtraback

Datenbank löschen und weglaufen? So sichern Sie die MySQL-Datenbank mit xtraback

1. Die mysqldump-Sicherungsmethode verwendet eine logische Sicherung. Der größte Nachteil ist die langsame Sicherungs- und Wiederherstellungsgeschwindigkeit. Für eine 50-Gigabyte-Datenbank ist diese Geschwindigkeit akzeptabel, aber wenn die Datenbank sehr groß ist, ist die Verwendung von mysqdump für die Sicherung nicht sehr geeignet. .

Zu diesem Zeitpunkt benötigen Sie ein sehr nützliches und effizientes Tool. Xtraback ist eines davon, bekannt als die kostenlose Version von InnoDB Hotbackup.

Die Funktionen von xtraback sind wie folgt:

  • Der Backup-Prozess ist schnell und zuverlässig
  • Der Backup-Prozess unterbricht laufende Transaktionen nicht
  • Möglichkeit, Speicherplatz und Datenverkehr durch Komprimierung und andere Funktionen zu sparen
  • Automatische Backup-Verifizierung
  • Schnelle Wiederherstellungsgeschwindigkeit

2. Installieren Sie xtraback 1) Laden Sie xtraback herunter

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz 

2) Entpacken

[root@master ~]# tar zxf percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

3) Gehen Sie in das Entpackverzeichnis und kopieren Sie alle Programme unter bin nach /usr/bin

[root@master ~]# cd percona-xtrabackup-2.4.4-Linux-x86_64/ [root@master percona-xtrabackup-2.4.4-Linux-x86_64]# cp bin/* /usr/bin/

Xtraback ist ein Tool für Hot Backup von InnoDB- und XtraDB-Tabellen. Es unterstützt Online-Hot Backup und kann InnoDB-Tabellen sichern, ohne sie zu sperren. Dieses Tool kann jedoch keine Myisam-Engine-Tabellen bedienen.

4) Installieren Sie entsprechende Plug-Ins

yum installiere perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5 –y

5) Percona-Toolkit herunterladen und installieren

wget https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm 
[root@master ~]# rpm -ivh percona-toolkit-2.2.19-1.noarch.rpm Warnung: percona-toolkit-2.2.19-1.noarch.rpm: Header V4 DSA/SHA1-Signatur, Schlüssel-ID cd2efd2a: NOKEY wird vorbereitet... ######################################## [100 %] Aktualisieren/Installieren...  
1:percona-toolkit-2.2.19-1 ######################################### [100%] 

3. Sicherung

Lösung 1: xtrabackup vollständige Sicherung + binlog inkrementelle Sicherung (bin-log muss aktiviert sein)

Erstellen Sie ein Backup-Verzeichnis

[root@master ~]# mkdir -p /opt/mysqlbackup/{full,inc}

Zuerst erstellen wir eine Testdatenbank, erstellen eine Tabelle mit dem Namen tb1 in der Testdatenbank und fügen drei Datenzeilen wie folgt in die Tabelle tb1 ein:

Nach dem Einfügen der Daten führen wir eine Vollsicherung wie folgt durch:

[root@master ~]# 
innobackupex --user=root --password=pwd123 /opt/mysqlbackup/full/

Der obige vollständige Sicherungspfad befindet sich im Verzeichnis mysqlbackup, das wir gerade erstellt haben.

Die folgende Eingabeaufforderung wird angezeigt, um zu beweisen, dass die Sicherung erfolgreich war

Die Sicherungsdateien lauten wie folgt:

Bisher ist die vollständige Sicherung vollständig erfolgreich, und dann werden einige Daten in eine MySQL-Datenbank eingefügt, und dann wird eine inkrementelle Sicherung durchgeführt

So erstellen Sie nach der vollständigen Sicherung eine inkrementelle Sicherung der Datenbankänderungen im Binärprotokoll:

Zeigen Sie die Position des Binlog-Protokolls während der vollständigen Sicherung an:

Das Obige ist die Position, nachdem unsere vollständige Sicherung abgeschlossen ist. Wenn wir jetzt Daten einfügen, beginnt es an dieser Position. Wir nennen es inkrementelle Sicherung von dieser Position aus. Jetzt fügen wir Daten wie folgt in die Tabelle tb1 ein:

Inkrementelle Sicherung von Binärdateien:

[Wurzel@Master ~]
# mysqlbinlog --start-position=1279 /usr/local/mysql/data/mysql-bin.000001 > /opt/mysqlbackup/inc/`date +%F`.sql

Nach Abschluss der Sicherung simulieren wir Datenbankschäden und versehentliches Löschen wie folgt

[root@master ~]# rm -rf /usr/local/mysql/data/*

Wiederherstellen der Datenbank

Stellen Sie zunächst unser vollständiges Backup wieder her, d. h. die Daten von Tom1/2/3 lauten wie folgt:

[root@master ~]#innobackupex --copy-back /opt/mysqlbackup/full/2017-11-21_11-47-42/

Die folgende Eingabeaufforderung scheint zu beweisen, dass die Wiederherstellung erfolgreich war

Nachdem die Daten im DATADIR-Verzeichnis wiederhergestellt wurden, müssen Sie außerdem sicherstellen, dass Eigentümer und Gruppe aller Datendateien die richtigen Benutzer sind, z. B. mysql. Andernfalls müssen Sie Eigentümer und Gruppe der Datendateien ändern, bevor Sie mysqld starten. wie:

# chown -R mysql:mysql /usr/local/mysql/data/

Starten Sie den MySQL-Dienst neu, um zu sehen, ob die Wiederherstellung erfolgreich ist

Aus dem Obigen können wir ersehen, dass die vollständige Sicherung erfolgreich wiederhergestellt wurde. Da wir während der vollständigen Sicherung 3 Datenzeilen eingefügt haben, werden wir die inkrementelle Sicherung wie folgt wiederherstellen:

Um zu verhindern, dass während der Wiederherstellung eine große Menge an Binärprotokollen generiert wird, können Sie die Binärprotokolle vor der Wiederherstellung vorübergehend schließen:

Anschließend prüfen wir, ob die Wiederherstellung erfolgreich war!

An diesem Punkt haben wir alle Daten erfolgreich wiederhergestellt. Das obige mit dem Tool binlog+xtrabackup implementierte Backup scheint etwas problematisch zu sein. Wenn Sie Probleme haben, sehen Sie sich bitte die folgende Lösung 2 an.

2. xtrabackup vollständige Sicherung + xtrabacup inkrementelle Sicherung

Vorbereitung der Testumgebung

Erstellen Sie eine Testdatenbank und eine Tabelle, in die Sie einige Datenzeilen eingeben können.

Erklärung der obigen Vorgänge:

Es wurde eine Testbibliothek erstellt, in der Testbibliothek wurde eine xx-Tabelle erstellt und die Daten von tom1 und tom2 wurden in die xx-Tabelle eingefügt.

Führen Sie als Nächstes wie folgt eine vollständige Sicherung durch:

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --user=root --password='pwd123' --popt=3306 --backup --target-dir=/opt/mysqlbackup/full/full_incre_$(date +%Y%m%d_%H%M%S)

Der schwarze Teil oben ist der Speicherort. Das Folgende zeigt, dass die Sicherung erfolgreich war

Zu diesem Zeitpunkt fügen wir die Daten erneut ein und führen eine inkrementelle Sicherung durch

Das erste inkrementelle Backup sieht wie folgt aus:

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --user=root --password='pwd123' --popt=3306 --backup --target-dir=/opt/mysqlbackup/inc/inc_incre_$(date +%Y%m%d_%H%M%S) --incremental-basedir=/opt/mysqlbackup/full/full_incre_20171121_123051/ 

Die folgende Meldung wird angezeigt und zeigt an, dass die Sicherung erfolgreich war!

Der obige Sicherungspfad lautet: /opt/mysqlbackup/inc/ Wir können die gesicherten Dateien anzeigen

Als nächstes fügen Sie erneut Daten in die xx-Tabelle ein und führen eine zweite inkrementelle Sicherung durch

Das zweite inkrementelle Backup sieht wie folgt aus:

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --user=root --password='pwd123' --popt=3306 --backup --target-dir=/opt/mysqlbackup/inc/inc_incre_$(date +%Y%m%d_%H%M%S) --incremental-basedir=/opt/mysqlbackup/inc/inc_incre_20171121_124604/

Die folgende Eingabeaufforderung wird angezeigt, um zu beweisen, dass die Sicherung erfolgreich war

Xtrabacup für schrittweise Genesung

Um den Effekt zu erzielen, habe ich die xx-Tabelle gelöscht

Beginnen Sie mit der Wiederherstellung einer Vollsicherung wie folgt:

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --apply-log-only --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 

2. Wiederherstellen des ersten Inkrements (tom3)

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --apply-log-only --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 --incremental-dir=/opt/mysqlbackup/inc/inc_incre_20171121_124604/ 

3. Stellen Sie das zweite Inkrement wieder her

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --apply-log-only --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 --incremental-dir=/opt/mysqlbackup/inc/inc_incre_20171121_125202 

Stellen Sie die gesamte Bibliothek wieder her

[root@master ~]# xtrabackup --defaultes-file=/etc/my.cnf --prepare --user=root --password="pwd123" --target-dir=/opt/mysqlbackup/full/full_incre_20171121_123051 

MySQL-Datenbank stoppen - Rsync-Datendatei starten

[root@master ~]# systemctl stop mysqld [root@master ~]# cd /opt/mysqlbackup/full/full_incre_20171121_123051/ [root@master full_incre_20171121_123051]# rsync -rvt --exclude 'xtrabackup_checkpoints' --exclude 'xtrabackup_logfile' ./ /usr/local/mysql/data/ 

Erteilen Sie MySQL-Zugriffsberechtigungen

[root@master ~]# chown -R mysql:mysql /usr/local/mysql/data/

Starten Sie den MySQL-Dienst, um zu sehen, ob die Wiederherstellung erfolgreich war

Zusammenfassen

Oben wird die Methode zur Verwendung von xtraback zum Sichern der MySQL-Datenbank beschrieben. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • xtrabackup MySQL-Datenbank sichern und wiederherstellen
  • MySQL verwendet xtrabackup für Sicherungs- und Wiederherstellungsvorgänge
  • Tutorial zum Schreiben von Skripten zur Verwendung von Xtrabackup zum Sichern von MySQL-Daten
  • Tutorial zur Verwendung von innobackupex und xtrabackup zum Sichern und Wiederherstellen großer Datenmengen in MySQL
  • Sichern und Wiederherstellen mit dem Tool Xtrabackup (ein unverzichtbares Tool für MySQL DBA)
  • MySQL Xtrabackup - gemeinsame Nutzung der Backup- und Wiederherstellungsimplementierung
  • Xtrabackup-Benutzerhandbuch InnoDB-Datensicherungstool

<<:  So installieren Sie binäres MySQL unter Linux und knacken das MySQL-Passwort

>>:  Miniprogramm zur Implementierung des Paging-Effekts

Artikel empfehlen

Beispiel für die Implementierung der Graphql-Schnittstelle in Vue

Hinweis: In diesem Artikel geht es um die grundle...

So erhalten Sie die Schnittmenge/Differenz/Vereinigung zweier Mengen in MySQL

Typische MySQL-Szenarien: Schnittmenge und Differ...

Wird der veraltete Docker durch Podman ersetzt?

Das Kubernetes-Team hat vor Kurzem angekündigt, d...

Detaillierte Erläuterung der Wissenspunkte zum MySQL Strict Mode

I. Erläuterung des strikten Modus Gemäß den Einsc...

Lösung für „Keine Eingabedatei angegeben“ in nginx+php

Heute ist in meiner lokalen Entwicklungsumgebung ...

Versprechenskapselung wx.request-Methode

Im vorherigen Artikel wurde die Implementierungsm...

Analyse von 2 Token-Gründen und Beispielcode in der Webprojektentwicklung

Inhaltsverzeichnis Frage: Es gibt 2 Token im Proj...

Erste Schritte mit Front-End-Vue-Unit-Tests

Inhaltsverzeichnis 1. Warum brauchen wir Unit-Tes...

Detaillierte Erklärung zur Verwendung von Router-View-Komponenten in Vue

Wenn Sie ein Vue-Projekt entwickeln, müssen Sie h...

Praktische Hinweise zur Installation von Jenkins mit Docker-Compose

Erstellen Sie ein Verzeichnis cd /usr/local/docke...