Beispielskript für inkrementelle MySQL-Sicherungs- und Breakpoint-Wiederherstellung

Beispielskript für inkrementelle MySQL-Sicherungs- und Breakpoint-Wiederherstellung

Einführung

Inkrementelles Backup bedeutet, dass nach einem Voll-Backup oder dem letzten inkrementellen Backup bei jedem nachfolgenden Backup nur die Dateien gesichert werden müssen, die im Vergleich zum vorherigen hinzugefügt oder geändert wurden. Dies bedeutet, dass das Objekt der ersten inkrementellen Sicherung die hinzugefügten und geänderten Dateien sind, die nach der vollständigen Sicherung generiert wurden; das Objekt der zweiten inkrementellen Sicherung sind die hinzugefügten und geänderten Dateien, die nach der ersten inkrementellen Sicherung generiert wurden, und so weiter.

Zweck

Um das Problem der langen Zeit und der langsamen Wiederherstellung bei der vollständigen Sicherung zu lösen, wird die inkrementelle Sicherung übernommen

Merkmale

Vorteile: Keine doppelten Daten, kleines Backup-Volumen, kurze Zeit: Wiederherstellung vom letzten Voll-Backup und dem inkrementellen Backup nach dem Voll-Backup erforderlich, inkrementelle Backups müssen wiederholt einzeln wiederhergestellt werden, umständlicher Vorgang

Durchführung

Indirekte inkrementelle Sicherung über das MySQL-Binärprotokoll:
Das Binärprotokoll speichert alle aktualisierten oder potenziell aktualisierten Daten. Das Binärprotokoll beginnt mit der Aufzeichnung, wenn MySQL gestartet wird, und es wird eine neue Protokolldatei erstellt. Die Methode „Flush Logs“ muss regelmäßig ausgeführt werden, um das Protokoll neu zu erstellen und eine binäre Dateisequenz zu generieren.

Experimentelle Umgebung:

Eine virtuelle CentOS7-Maschine mit installierter MySQL5.7-Datenbank

Betriebsablauf:

1. Inkrementelles Backup

1. Fügen Sie der Konfigurationsdatei ein Binärprotokoll hinzu

vim /etc/meine.cnf
[mysqld] #Unter diesem Modul hinzufügen
log-bin=mysql-bin #Binärprotokoll

2. Starten Sie den Dienst neu und zeigen Sie das Binärprotokoll an

systemctl startet mysqld.service neu
cd /usr/local/mysql/data/
mysqlbinlog --no-defaults mysql-bin.000001


3. Erstellen Sie Datenbanken und Tabellen frei in der Datenbank als experimentelle Vorlagen


4. Erstellen Sie ein vollständiges Backup der Schuldatenbank

mysqldump -uroot -pabc123 Schule > /opt/school.sql

5. Aktualisieren Sie das Protokoll und generieren Sie ein neues Protokoll. Hinweis: Der vorherige Datenbankvorgang wird in das Protokoll mit der Nummer 000001 geschrieben und das neu generierte Protokoll mit der Nummer 000002 ist leer.

mysqladmin -uroot -pabc123 flush-logs #Protokolle leeren
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001 #Protokoll 000001 anzeigen
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 #Protokoll 000002 anzeigen
#--base64-output=decode-rows -v: Um verstümmelte Zeichen in der Datei zu vermeiden, kann auch der vorherige Anzeigebefehl verwendet werden



6. Fügen Sie neue MySQL-Datenbankoperationen hinzu, aktualisieren Sie dann die Protokolle und führen Sie inkrementelle Sicherungen durch

Schule benutzen;
mysql>invertieren in info(id,name,score)-Werte (3,'aaa',78);
mysql>delete from info where name='tom'; #Fehler
mysql> in Info einfügen (ID, Name, Score) Werte (4, 'bbb', 64);
mysqladmin -uroot -pabc123 flush-logs #Protokolle leeren, 000003 generieren
#Dieses inkrementelle Backup wurde in der Protokolldatei 000002 aufgezeichnet



7. Löschen der Infotabelle

mysql -uroot -pabc123 -e 'Schule verwenden;Tabelleninfo löschen;'

8. Stellen Sie das vollständige Backup wieder her und stellen Sie dann das inkrementelle Backup wieder her

mysql -uroot -pabc123 school < /opt/school.sql #Vollständige Sicherung und Wiederherstellung

mysqlbinlog --no-defaults mysql-bin.000002 | mysql -uroot -p


Nun, hier gibt es ein Problem. Wenn ein Fehler auftritt, tritt beim Wiederherstellen des Backups ein Fehler auf, und das ideale Backup kann nicht erreicht werden, um den eigentlichen Zweck zu erreichen. Zu diesem Zeitpunkt ist eine Broken-Chain-Wiederherstellung erforderlich (eine spezielle Methode zum Wiederherstellen inkrementeller Sicherungen), d. h. bei der Wiederherstellung werden nur korrekte Datenbankvorgänge wiederhergestellt.

2. Wiederherstellung defekter Links

Bevor Sie eine Wiederherstellung nach einem defekten Link durchführen, müssen Sie den Zustand ohne inkrementelle Sicherung und Wiederherstellung wiederherstellen, wie in der Abbildung dargestellt


Basierend auf dem Zeitpunkt

04.09.2018 16:43:52 Fehler bei der Betriebszeit (der Ladebeginn endet zu diesem Zeitpunkt)
04.09.2018 16:44:32 Korrekte Betriebszeit (Ladevorgang ab diesem Zeitpunkt erneut starten) Ladevorgang ab diesem Zeitpunkt erneut starten

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 #Protokoll 000002 anzeigen


mysqlbinlog --no-defaults --stop-datetime='2018-09-04 16:43:52' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p
mysqlbinlog --no-defaults --start-datetime='2018-09-04 16:44:32' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p


Basierend auf dem Standortpunkt

bei 565 Die letzte korrekte Ausführungsposition --stop-position
bei 667 Nächste korrekte Ausführungsposition --Startposition

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 #Protokoll 000002 anzeigen

mysqlbinlog --no-defaults --stop-position='565' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p
mysqlbinlog --no-defaults --start-position='667' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p

Das könnte Sie auch interessieren:
  • Detaillierte Schritte zum Konfigurieren von mysql8.0.20 mit binlog2sql und einfacher Sicherung und Wiederherstellung
  • Eine kurze Analyse der MySQL-Sicherung und -Wiederherstellung
  • Detaillierte Erläuterung der MySQL-Sicherung und -Wiederherstellung
  • Implementierungscode für die Sicherung und Wiederherstellung von MySQL-Datenbanken
  • Analyse der Implementierungsmethoden für MySQL-Datensicherung und -Wiederherstellung
  • Vollständige MySQL-Sicherung und schnelle Wiederherstellungsmethoden
  • Shell-Skript zum Implementieren geplanter MySQL-Sicherungs-, Lösch- und Wiederherstellungsfunktionen
  • So stellen Sie eine Datenbank und eine Tabelle aus einer vollständigen MySQL-Datenbanksicherung wieder her
  • So stellen Sie einzelne Tabellendaten mithilfe der vollständigen MySQL-Datenbanksicherungsdaten wieder her
  • C# implementiert MySQL-Befehlszeilensicherung und -wiederherstellung
  • Designideen für MySQL-Backup und -Wiederherstellung

<<:  Eine kurze Analyse kontrollierter und unkontrollierter Komponenten in React

>>:  So installieren Sie das ZSH-Terminal in CentOS 7.x

Artikel empfehlen

MySQL 5.7.21 Installations- und Konfigurations-Tutorial unter Windows 10

Dieser Artikel zeichnet die Installations- und Ko...

Detaillierte Erläuterung der Mysql-Funktionsaufrufoptimierung

Inhaltsverzeichnis Funktionsaufrufoptimierung Fun...

Implementierung von dynamischem REM für mobiles Layout

Dynamische REM 1. Lassen Sie uns zunächst die akt...

Eine kurze Diskussion über reguläre JS-RegExp-Objekte

Inhaltsverzeichnis 1. RegExp-Objekt 2. Grammatik ...

Beispielcode für die Codevorlage für die Linux C-Protokollausgabe

Vorwort Dieser Artikel stellt hauptsächlich den r...

So löschen Sie Tabellendaten in MySQL

Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...

MySQL-Fremdschlüsseleinschränkung (FOREIGN KEY) Fallerklärung

Die MySQL-Fremdschlüsseleinschränkung (FOREIGN KE...

So vereinheitlichen Sie den Zeichensatz einer vorhandenen MySQL-Datenbank

Vorwort In der Datenbank sind einige Datentabelle...

Detaillierte Erläuterung der MySQL sql_mode-Abfrage und -Einstellung

1. Führen Sie SQL aus, um anzuzeigen wählen Sie @...

So sichern Sie MySQL-Kontoinformationen elegant

Vorwort: Ich bin kürzlich auf das Problem der Ins...

Probleme und Vorsichtsmaßnahmen beim Festlegen von maxPostSize für Tomcat

1. Warum maxPostSize festlegen? Der Tomcat-Contai...

MySQL-Trigger: ausführliche Erklärung und einfaches Beispiel

Einfaches Beispiel für einen MySQL-Trigger Gramma...

Detaillierte Erläuterung der Nginx-Anti-Hotlink- und Anti-Crawler-Konfiguration

Erstellen Sie eine neue Konfigurationsdatei (gehe...