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
Vorwort Docker erfreut sich seit zwei Jahren groß...
MySQL-Downloads für alle Plattformen sind unter M...
Inhaltsverzeichnis Primärschlüsseleinschränkung E...
Teil.0 Hintergrund Die Intranetserver des Unterne...
1. Einleitung Gilt es als Aufwärmen alter Themen,...
Inhaltsverzeichnis 1. Vergleich der Daten vor und...
Umfeld Linux 3.10.0-693.el7.x86_64 Docker-Version...
Installieren Sie pymysql pip install pymysql 2|0V...
Um es zusammenzufassen: „Nur lesen“ ist nur für Ei...
Tutorial zur Netzwerknutzung Offizielle Website d...
Dieser Artikel stellt den CSS-Bildlaufleistensele...
Speicherregeln für varchar In Versionen unter 4.0...
student.xml <?xml version="1.0" enco...
Heute ist das Springboot-Projekt des Unternehmens...
Wenn Sie keine Javascript-Steuerung verwenden möch...