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
1. Herunterladen und entpacken 1. Einführung in Z...
MySQL-Escape Escape bedeutet die ursprüngliche Se...
Basierend auf Vue Die Kernidee dieser Funktion be...
Liste der HTML-Tags markieren Typ Name oder Bedeu...
Berechnung des Boxmodells <br />Rand + Rahme...
Die ersten Computer konnten nur ASCII-Zeichen ver...
Beim Herstellen einer Verbindung mit der lokalen ...
Gängige Methoden zur Begrenzung der Eingabe 1. Um ...
Ich habe vor Kurzem die 34 goldenen Regeln von Yah...
Vorwort Zuerst wollte ich es mit wget auf CentOS8...
Zu meistern: localStorage, Komponentenkapselung Ä...
Inhaltsverzeichnis Was ist bidirektionale Datenbi...
Methode 1: Verwenden Sie das Zielereignisattribut...
In diesem Artikel wird der spezifische Code von V...
Beim Schreiben von Seiten stellen wir manchmal fe...