Um eine inkrementelle Sicherung der MySQL-Datenbank durchzuführen, müssen Sie nur die Datenbankkonfigurationsdatei /etc/my.cnf ändern, um die Binärprotokollfunktion zu aktivieren. Als nächstes habe ich einige Methoden im Internet zu Rate gezogen und selbst geschrieben. Das Wichtigste war, einige seiner Ideen und Methoden zu lernen. #Funktion: Inkrementelles MySQL-Backup #Version: 1.0.0 #Autor: Wangyanlin #Datum: 02.08.2017 #--------------------------------------------------------------------------------------------- #!/bin/sh export LANG=en_US.UTF-8 #Zeit einstellen DATE=`date +%Y%m%d` #Informationen festlegen USER=root PASSWORT=withub #Legen Sie den Pfad cd / fest /usr/bin/mkdir -p mysql_bak/daily /usr/bin/mkdir -p mysql_bak/logs BakDir=/mysql_bak/daily BinDir=/var/lib/mysql LogFile=/mysql_bak/logs/Daily_$DATE.log BinlogFile=/var/lib/mysql/mysql-bin.index /usr/bin/mysqladmin -u$USER -p$PASSWORD flush-logs #Protokoll leeren Zähler=`wc -l $BinlogFile | awk '{print $1}'` NächsteNummer=0 start_time=`Datum +'%J-%m-%d %H:%M:%S'` echo `date +"%Y Jahr%m Monat%d Tag%H:%M:%S"` $Next1 Backup starten! >> $LogFile #Diese For-Schleife wird verwendet, um die beiden Werte von $Counter und $NextNum zu vergleichen, um festzustellen, ob die Datei existiert oder die neueste ist. für Datei in „cat $BinlogFile“ Tun base=`Basisname $file` #basename wird verwendet, um den Dateinamen mysql-bin.00000* abzufangen und das ./ vor ./mysql-bin.000005 zu entfernen. NächsteNummer=`Ausdruck $NächsteNummer + 1` wenn [ $NächsteNum -eq $Zähler ] Dann echo $base überspringen! >> $LogFile anders dest=$BakDir/$base wenn(test -e $dest) #test -e wird verwendet, um festzustellen, ob die Zieldatei existiert. Wenn sie existiert, schreibt „exist!“ in $LogFile. Dann echo $base existiert! >> $LogFile anders cp $BinDir/$base $BakDir echo $base kopieren >> $LogFile fi fi Erledigt echo `date +"%Y Jahr%m Monat%d Tag%H:%M:%S"` $Next2 Sicherung erfolgreich! >> $LogFile Endzeit = `Datum + '%J-%m-%d %H:%M:%S'` start_seconds=$(Datum --date="$start_time" +%s); end_seconds=$(Datum --date="$end_time" +%s); echo "Laufzeit dieser Sicherung: "$((end_seconds-start_seconds))"s" >> $LogFile Fügen Sie eine geplante Aufgabe hinzu: crontab -e 00 03 * * * /root/MySQL_incrementbak.sh #Starten Sie das inkrementelle Backup jeden Tag um 3:00 Uhr Der Effekt des Protokollausdrucks ist wie folgt: PS: Werfen wir einen Blick auf die MySQL-Voll- und inkrementellen Backup-Skripte Gesamtbetrag: [root@master leo]# cat DBfullBak.sh #!/bin/bash #Verwenden Sie mysqldump, um MySQL-Daten vollständig zu sichern BakDir=/root/leo/full LogFile=/root/leo/full/bak.log Datum=`Datum +%Y%m%d` Beginn=`Datum +"%Y Jahr%m Monat%d Tag%H:%M:%S"` cd $BakDir DumpFile=$Date.sql GZDumpFile=$Date.sql.tgz mysqldump -uroot -p123456 --alle Datenbanken --alle Tabellen sperren --Routinen --Trigger --Events --Master-Data=2 --Flush-Logs > $DumpFile tar zcvf $GZDumpFile $DumpFile rm $DumpFile Letztes=`Datum +"%Y Jahr%m Monat%d Tag%H:%M:%S"` echo Start: $Begin Ende: $Last $GZDumpFile succ >> $LogFile Parameterhinweise: --all-databases #Alle Datenbanken sichern --lock-all-tables #Lesesperren zu allen Tabellen hinzufügen --routinge #Gespeicherte Prozeduren und Funktionen --triggers #Auslösen --events #Ereignisse aufzeichnen --master-data=2 #Aktuelle Position des Binärlogs in der Sicherungsdatei aufzeichnen und mit Anmerkungen versehen. 1 ist nicht auskommentiert und hat bei der Master-Slave-Replikation eine Bedeutung --flush-logs #Einmaliges Rollen des Logs Die Ergebnisse sind wie folgt: [root@master voll]# ls 20140728.sql.tgz bak.log [root@master voll]# cat bak.log Beginn: 2014-07-28 19:02:59 Ende: 2014-07-28 19:02:59 20140728.sql.tgz erfolgreich Beginn: 2014-07-28 19:12:01 Ende: 2014-07-28 19:12:01 20140728.sql.tgz erfolgreich [root@master voll]# Inkrementelles Backup: [root@master leo]# cat DBDailyBak.sh #!/bin/bash BakDir=/root/leo/binlog/ BinDir=/var/lib/mysql LogFile=/root/leo/binlog/bak.log BinFile=/var/lib/mysql/mysql-bin.index mysqladmin -uroot -p123456 Protokolle leeren Zähler=`wc -l $BinFile|awk '{print $1}'` NächsteNummer=0 für Datei in „cat $BinFile“ Tun base=`Basisname $file` NächsteNummer=`Ausdruck $NächsteNummer + 1` wenn [ $NächsteNum -eq $Zähler ] Dann echo $base überspringen! >> $LogFile anders dest=$BakDir/$base wenn(test -e $dest) Dann echo $base existiert! >> $LogFile anders cp $BinDir/$base $BakDir/ echo $base kopieren >> $LogFile fi fi Erledigt echo `date +"%Y Jahr%m Monat%d Tag%H:%M:%S"` $Nächste Sicherung erfolgreich~ >> $LogFile Zusammenfassen Oben ist die vom Herausgeber vorgestellte Idee und Methode zur inkrementellen Sicherung einer MySQL-Datenbank. Ich hoffe, dass sie für alle hilfreich ist. 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:
|
>>: Vue-CLI - Aufzeichnung der Schritte zur mehrseitigen Verzeichnisverpackung
In diesem Artikel wird der spezifische Code von j...
Beschreibung der Installationsumgebung •Systemver...
Lebenslauf-Code: XML/HTML-CodeInhalt in die Zwisc...
TRUNCATE-TABELLE Löscht alle Zeilen in einer Tabe...
Vorwort Hallo zusammen, ich bin Liang Xu. Bei der...
Installations-Tutorial zur dekomprimierten Versio...
Ein neues Fenster wird geöffnet. Vorteile: Wenn d...
Inhaltsverzeichnis 1. Nachfragehintergrund 2. Opt...
Zusammenfassung: Nginx-Reverse-Proxy für JIRA kon...
Einführung der Server-U-Software Server-U ist ein...
Zunächst stellen wir vor, wie (1) MySQL 5.7 hat e...
Nach der Konfiguration der TabBar im WeChat-Apple...
Die Datenbankdaten der Projekttestumgebung sind v...
Vorwort: Ich habe Win10 neu installiert und gleic...
Quelle des Problems Wie wir alle wissen, erzeugt ...