- 
                            
                            
Einführung in die inkrementelle Sicherung
 - 
                            
                            
Einführung in Binlog
 - 
                            
                            
So führen Sie ein inkrementelles MySQL-Backup durch?
 - 
                            
                            
Wie kann man sich von einem inkrementellen MySQL-Backup erholen?
 - 
                            
                            
Eine einfachere Möglichkeit, inkrementelle MySQL-Sicherungen zu erstellen
 - 
                            
                            
MySQL-Inkrementelle Sicherungs-FAQs
 - 
                            
                            
Fazit
 
Unerwartete Situationen wie Betriebssystemabstürze, Stromausfälle, Dateisystemabstürze und Hardwarefehler können alle dazu führen, dass die verwendete Datenbank fehlerhaft funktioniert und dadurch Dateninkonsistenzen entstehen. Um die Datensicherheit zu gewährleisten, ist es notwendig, regelmäßig Datensicherungen durchzuführen. Datenbanksicherungen können in Vollsicherungen, Protokollsicherungen, inkrementelle Sicherungen und Dateisicherungen unterteilt werden. Bei einer großen Datenbank kann häufiges Durchführen von Vollsicherungen viel Zeit in Anspruch nehmen, wobei oft unveränderte Daten mehrfach gesichert werden, was zu einer Ressourcenverschwendung führt. Die heute am häufigsten verwendete Strategie für die Datenbanksicherung besteht darin, auf Basis der Vollsicherung häufigere inkrementelle Sicherungen durchzuführen. Beispielsweise kann eine Vollsicherung einmal pro Woche in Zeiten geringer Nutzung durchgeführt werden, gefolgt von täglichen inkrementellen Sicherungen, die alle Änderungsoperationen an der Datenbank innerhalb dieses Zeitraums erfassen.
Einführung in die inkrementelle Sicherung
Die inkrementelle Sicherung bezieht sich darauf, nur die Dateien zu sichern, die seit der letzten vollständigen Sicherung oder der vorherigen inkrementellen Sicherung hinzugefügt oder geändert wurden. Das bedeutet, dass die erste inkrementelle Sicherung die nach der vollständigen Sicherung hinzugefügten oder geänderten Dateien umfasst; die zweite inkrementelle Sicherung umfasst die nach der ersten inkrementellen Sicherung hinzugefügten oder geänderten Dateien, und so weiter. Der größte Vorteil dieser Sicherungsmethode besteht darin, dass keine doppelten Sicherungsdaten entstehen, was zu einer geringeren Sicherungsgröße und kürzeren Sicherungsdauer führt. Die Wiederherstellung von Daten aus inkrementellen Sicherungen ist jedoch komplizierter. Sie benötigen die letzte vollständige Sicherung und alle inkrementellen Sicherungen (der Verlust oder Schaden einer inkrementellen Sicherung kann die Wiederherstellung unmöglich machen), und sie müssen in chronologischer Reihenfolge – beginnend mit der vollen Sicherung und dann jede inkrementelle Sicherung nacheinander – wiederhergestellt werden, was die Wiederherstellzeit erheblich verlängert.
Wenn beispielsweise eine Datenbank 20 GB Daten enthält und täglich zusätzliche 10 MB an Daten hinzukommen, würde eine vollständige Sicherung jeden Tag eine hohe Belastung für den Server darstellen. Stattdessen können wir nur die neu hinzugefügten Daten sichern, um die Last für den Server zu verringern.
Einführung in Binlog
MySQL bietet keine direkte Methode für inkrementelle Sicherungen, aber es kann indirekt über die binären MySQL-Logs inkrementelle Sicherungen durchführen.
Das Binlog wird durch die Option log-bin in der Konfigurationsdatei aktiviert. Der MySQL-Server erstellt zwei neue Dateien „XXX-bin.001“ und „xxx-bin.index“ im Datenhauptverzeichnis. Wenn im Konfigurationsoption kein Dateiname angegeben ist, verwendet MySQL den Hostnamen, um diese beiden Dateien zu benennen. Die „.index“-Datei enthält eine Liste aller Protokolldateien. MySQL zeichnet alle Änderungen am Datenbankinhalt und -aufbau in den Dateien „XXX-bin.n“ auf, zeichnet jedoch „SELECT“- und „UPDATE“-Anweisungen nicht auf, die tatsächlich keine Daten aktualisieren.
Wenn die MySQL-Datenbank stoppt oder neu startet, protokolliert der Server in die nächste Protokolldatei. MySQL erzeugt beim Neustart eine neue Binlog-Datei mit einer fortlaufenden Dateinummer. Zusätzlich wird auch dann eine neue Protokolldatei erstellt, wenn eine Protokolldatei die durch die Systemvariable „max_binlog_size“ festgelegte Grenze überschreitet.
Das inkrementelle Backup basiert auf dem Binlog-Mechanismus von MySQL. Jeder Schritt von Einfüge-, Aktualisierungs-, Lösch- und Abfragevorgängen in der Datenbank wird im Binlog aufgezeichnet. Indem zunächst ein vollständiges Backup durchgeführt und gleichzeitig das Binlog geleert wird, werden alle nachfolgenden Operationen in neuen Binlog-Dateien erfasst. Für das inkrementelle Backup müssen wir lediglich die neu generierten Binlog-Dateien sichern, um so eine vollständige Sicherung der kontinuierlich wachsenden Datenbank zu erreichen.
Die Bedeutung von Binärlogs für Backups ist wie folgt:
Binärprotokolle speichern alle Operationen, die Daten aktualisieren oder möglicherweise aktualisieren.
Binärprotokolle beginnen mit der Aufzeichnung, nachdem der MySQL-Server gestartet wurde, und erstellen eine neue Protokolldatei, wenn die festgelegte Dateigröße erreicht ist oder wenn der Befehl „flush logs“ ausgeführt wird.
Durch die regelmäßige Ausführung des Befehls „flush logs“, das Erstellen einer neuen Sequenz von Binärprotokolldateien und das sichere Speichern dieser Dateien wird eine inkrementelle Sicherung über einen Zeitraum abgeschlossen.
So führen Sie ein inkrementelles MySQL-Backup durch?
Ein inkrementelles MySQL-Backup kann mithilfe von MySQL-Protokollen realisiert werden. MySQL-Protokolle umfassen drei Typen: Binärprotokolle, Transaktionsprotokolle und Fehlerprotokolle. Dabei sind die Binärprotokolle die primären Protokolle von MySQL und enthalten alle Datenänderungsoperationen im binären Format, gespeichert auf der Festplatte. Durch das Sichern der Binärprotokolle kann ein inkrementelles MySQL-Backup implementiert werden.
Schritte für die inkrementelle Sicherung von MySQL:
1. MySQL-Binärprotokoll aktivieren:
Folgende Parameter in der MySQL-Konfigurationsdatei („my.cnf“) festlegen:
[mysql] log-bin=mysql-bin server-id=1
Der „log-bin“-Parameter legt das Präfix für die Binärprotokolldatei fest, und der „server-id“-Parameter identifiziert die MySQL-Instanz eindeutig.
2. Erstellen Sie einen Backup-Benutzer:
CREATE USER 'backup'@'localhost' IDENTIFIED BY 'your_password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, PROCESS, SUPER, RELOAD ON *.* TO 'backup'@'localhost';
Hierbei ist „backup“ der Benutzername. Der Benutzer muss über die folgenden Berechtigungen verfügen: „REPLICATION CLIENT“, „REPLICATION SLAVE“, „PROCESS“, „SUPER“ und „RELOAD“.
3. Führen Sie eine vollständige Sicherung durch:
Verwenden Sie den Befehl „mysqldump“, um die gesamte MySQL-Datenbank in eine Datei zu sichern:
mysqldump -u root -P 3306 -h 127.0.0.1 -p123456 ks_flask > ks_flask.sql
Hier ist „localhost“ der MySQL-Host, „root“ der Benutzername und „ks_flask“ der Datenbankname.
4. Aktuelle Position des Binärprotokolls aufzeichnen:
Nachdem die erste vollständige Sicherung durchgeführt wurde, notieren Sie den Namen und die Position der aktuellen binären Protokolldatei für zukünftige inkrementelle Sicherungen.
SHOW MASTER STATUS;
Dieser Befehl gibt die aktuelle Binär-Log-Datei und Position zurück.
5. Inkrementelle Sicherung durchführen:
Verwenden Sie den Befehl „mysqlbinlog“ mit den Parametern „--start-datetime“, „--stop-datetime“ und „--start-position“, um den Zeitraum und die Position der vorherigen Sicherung anzugeben.
mysqlbinlog --start-datetime='2023-10-23 00:00:00' --stop-datetime='2023-10-23 23:59:59' --start-position=[previous position] mysql-bin.000001 > incr_backup_2023-10-23.sql
Hierbei handelt es sich bei „[previous position]“ um die aufgezeichnete Position im Binärprotokoll aus der letzten Sicherung.
6. Notieren Sie die neue Position des Binärprotokolls:
Nachdem Sie das inkrementelle Backup ausgeführt haben, verwenden Sie „SHOW MASTER STATUS“, um die neue Binärprotokolldatei und Position für das nächste inkrementelle Backup zu protokollieren.
SHOW MASTER STATUS;
7. Führen Sie regelmäßig inkrementelle Sicherungen durch:
Führen Sie tägliche inkrementelle Sicherungen basierend auf den Anforderungen durch, wobei sichergestellt werden muss, dass die Änderungen des Vortages enthalten sind. Automatisierungsskripte können verwendet werden, um die Positionen der Binärprotokolle regelmäßig zu erfassen und zu aktualisieren.
8. Sicherungsdaten wiederherstellen:
Vollständige und inkrementelle Sicherungen in MySQL zusammenführen und wiederherstellen:
mysql -hlocalhost -uroot -p your_database < ks_flask.sql mysql -hlocalhost -uroot -p your_database < incr_backup_2023-10-23.sql
Wenn mehrere inkrementelle Sicherungen vorhanden sind, stellen Sie diese in chronologischer Reihenfolge wieder her.
Wie kann man sich von einem inkrementellen MySQL-Backup erholen?
Es gibt drei gängige Methoden für die inkrementelle Wiederherstellung: allgemeine Wiederherstellung, positionsbasierte Wiederherstellung und Wiederherstellung zu einem bestimmten Zeitpunkt.
1. Allgemeine Wiederherstellung
Stellt alle gesicherten Inhalte des Binärprotokolls wieder her.
mysqlbinlog [--no-defaults] incremental backup file | mysql -u username -p password
2. Positionsbezogene Wiederherstellung
Wenn ein Datenbankadministrator Operationen durchführt, können gleichzeitig fehlerhafte und korrekte Operationen auftreten. Die positionsbasierte Wiederherstellung ermöglicht eine genauere Wiederherstellung.
Wiederherstellung an eine bestimmte Position
mysqlbinlog --stop-position='operation ID' binary log | mysql -u username -p password
Wiederherstellung ab einer bestimmten Position starten
mysqlbinlog --start-position='operation ID' binary log | mysql -u username -p password
3. Wiederherstellung zu einem bestimmten Zeitpunkt
Überspringt einen bestimmten fehlerhaften Zeitpunkt, um Daten wiederherzustellen. Es gibt drei Methoden:
1) Wiederherstellung vom Anfang des Protokolls bis zu einem bestimmten Zeitpunkt
mysqlbinlog [--no-defaults] --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
2) Wiederherstellung von einem bestimmten Zeitpunkt bis zum Ende des Protokolls
mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
3) Wiederherstellung von einem Zeitpunkt zu einem anderen Zeitpunkt
mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
Eine einfachere Möglichkeit, inkrementelle MySQL-Sicherungen zu erstellen
Wie Sie sehen können, ist der gesamte Prozess der Durchführung von inkrementellen MySQL-Sicherungen und der Wiederherstellung mithilfe von Binärprotokollen komplex und zeitaufwendig. Da es sich um Befehlszeilenoperationen handelt, haben Sie keine Möglichkeit zurückzukehren, falls Sie während des Sicherungs- oder Wiederherstellungsprozesses einen Fehler machen.
Zum Glück bietet die leistungsstarke MySQL-Sicherungssoftware Vinchin Backup & Recovery eine benutzerfreundliche Oberfläche, um die Dinge zu vereinfachen.
Vinchin Backup & Recovery bietet eine automatischere, effizientere und sicherere Lösung, die MySQL-Sicherungsprozesse durch zentrales Management, schnelle Wiederherstellung, inkrementelle Sicherungen und flexible Speicherstrategien vereinfacht, um die langfristige Datenverfügbarkeit sicherzustellen. Außerdem bietet es flexible Sicherungsstrategien für Oracle DB, SQL Server, SQL Server, PostgreSQL, Postgres Pro und MariaDB, die automatische Sicherung, differentielle Sicherung und Transaktionsprotokollsicherung ermöglichen.
Um inkrementelle Sicherungsaufträge für MySQL-Datenbanken zu erstellen, gehen Sie bitte zur Seite Physical Backup > Database Backup > Backup (Beachten Sie, dass die erste Sicherung eine vollständige Sicherung sein muss):
1. Wählen Sie die Datenbanken aus, die gesichert werden müssen.

2. Wählen Sie einen Sicherungsknoten aus, auf dem die Sicherungsdaten verarbeitet und gespeichert werden sollen.

3. Konfigurieren Sie Sicherungsstrategien entsprechend Ihren Anforderungen.

Hier können Sie eine inkrementelle Sicherung gemäß Zeitplan auswählen.
4. Überprüfen und bestätigen Sie die Einstellungen.

Klicken Sie auf die Schaltfläche unten, um die 60-tägige kostenlose Testversion von Vinchin auszuprobieren und eine effiziente und zuverlässige Lösung für Datensicherung und Wiederherstellung zu erleben!
MySQL-Inkrementelle Sicherungs-FAQs
1. Was passiert, wenn eine Binärdatei gelöscht wird, bevor eine inkrementelle Sicherung wiederhergestellt wird?
Falls erforderliche Binärprotokolldateien fehlen, kann die Wiederherstellung unvollständig sein und zu Datenverlust führen. Stellen Sie immer sicher, dass Binärprotokolle so lange aufbewahrt werden, bis sie nicht mehr benötigt werden.
2. Wie lange sollte ich MySQL-Binärlogs für inkrementelle Sicherungen aufbewahren?
Das hängt von Ihrer Sicherungsrichtlinie ab. In der Regel sollten Protokolle aufbewahrt werden, bis eine neue vollständige Sicherung abgeschlossen und verifiziert ist.
Fazit
Es wird empfohlen, die Binärprotokolle für inkrementelle Sicherungen täglich zu aktualisieren. Dadurch wird sichergestellt, dass die Datenbanksicherungshäufigkeit hoch genug ist, um das Risiko eines Datenverlusts zu minimieren. Durch eine tägliche Aktualisierung der inkrementellen Sicherungen können Datenbankänderungen effektiver verwaltet werden, sodass bei Bedarf eine Wiederherstellung auf den neuesten Stand möglich ist.
Teilen auf: