Skriptbeschreibung
Alle Daten alle 7 Tage sichern und binlog jeden Tag sichern, was eine inkrementelle Sicherung ist
(Wenn weniger Daten vorhanden sind, sichern Sie einfach die vollständige Sicherung Daten einmal am Tag, es ist möglicherweise nicht möglich. Inkrementelles Backup ist notwendig)
Der Autor ist nicht sehr vertraut mit Shell-Skripten, daher sind viele Stellen sehr dumm geschrieben :)
Bin-Log aktivieren
In der MySQL 4.1-Version gibt es standardmäßig nur Fehlerprotokolle und keine anderen Protokolle. Sie können das Bin-Protokoll öffnen, indem Sie die Konfiguration ändern. Eine davon besteht darin, den MySQL-Abschnitt in / hinzuzufügen. etc/my.cnf:
[mysqld]
log-bin
Die Hauptfunktion dieses Protokolls ist die inkrementelle Sicherung oder Replikation (es kann andere Verwendungszwecke geben).
Wenn Sie eine inkrementelle Sicherung wünschen, müssen Sie dieses Protokoll öffnen.
Bei MySQL mit häufigen Datenbankoperationen wird dieses Protokoll sehr groß und es kann mehrere Flushes geben -logs in der Datenbank oder verwenden Sie mysqladmin, mysqldump, um Flush-Logs aufzurufen und die Parameter delete-master-logs zu verwenden. Diese Protokolldateien verschwinden und neue Protokolldateien werden generiert (zunächst leer).
Wenn Sie also nie ein Backup durchführen, ist das Einschalten des Protokolls möglicherweise nicht erforderlich.
Abgeschlossen Sie können Flush-Logs während des Backups und Flush-Logs vor dem inkrementellen Backup aufrufen, um die neuesten Daten zu sichern.
Vollständiges Sicherungsskript
Wenn viele Datenbankdaten vorhanden sind, sichern wir die Daten normalerweise ein paar Tage oder einmal pro Woche, um den Anwendungsbetrieb nicht zu beeinträchtigen Es spielt keine Rolle, ob Sie einmal am Tag ein Backup erstellen. Unter der Annahme, dass unsere Datenmenge relativ groß ist, lautet das Backup-Skript wie folgt: (Siehe ein MySQL-Backup-Skript im Internet, danke :) )
Das obige Skript sichert MySQL im lokalen Verzeichnis /backup/mysql und die inkrementellen Sicherungsdateien werden im Verzeichnis /backup/mysql/daily abgelegt.Hinweis: Das obige Skript überträgt die gesicherten Dateien nicht auf andere Remote-Computer und löscht auch nicht die Sicherungsdateien von vor ein paar Tagen: Der Benutzer muss relevante Skripte hinzufügen oder manuell
#!/bin/sh # mysql data backup script # by scud http://www.jscud.com # 2005-10-30 # # use mysqldump --help,get more detail. # BakDir=/backup/mysql LogFile=/backup/mysql/mysqlbak.log DATE=`date +%Y%m%d` echo " " >> $LogFile echo " " >> $LogFile echo "-------------------------------------------" >> $LogFile echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile echo "--------------------------" >> $LogFile cd $BakDir DumpFile=$DATE.sql GZDumpFile=$DATE.sql.tgz mysqldump --quick --all-databases --flush-logs --delete-master-logs --lock-all-tables > $DumpFile echo "Dump Done" >> $LogFile tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1 echo "[$GZDumpFile]Backup Success!" >> $LogFile rm -f $DumpFile #delete previous daily backup files:采用增量备份的文件,如果完整备份后,则删除增量备份的文件. cd $BakDir/daily rm -f * cd $BakDir echo "Backup Done!" echo "please Check $BakDir Directory!" echo "copy it to your local disk or ftp to somewhere !!!" ls -al $BakDir
Inkrementelle Sicherung
durchführenDas Datenvolumen der inkrementellen Sicherung ist relativ gering, sie muss jedoch auf der Grundlage einer vollständigen Sicherung durchgeführt werden. Benutzer können Zeit und Kosten abwägen und die Methode wählen, die für sie am vorteilhaftesten ist.
Inkrementell Das Bin-Protokoll wird wie folgt für die Sicherung verwendet:
Das inkrementelle Sicherungsskript dient dazu, die Protokolle vor der Sicherung automatisch in die Datei zu kopieren und dann eine Datei zu erstellen Neue Protokolldatei, daher müssen wir nur die ersten paar sichern, d Um die Datei zu erkennen, ist es nicht erforderlich, sie zu sichern, wenn sie gesichert wurde. Hinweis: Ebenso muss der Benutzer sie auch aus der Ferne senden, dies ist jedoch nicht der Fall Sie müssen es löschen. Das Programm generiert es automatisch nach einer vollständigen Sicherung.#!/bin/sh # # mysql binlog backup script # /usr/bin/mysqladmin flush-logs DATADIR=/var/lib/mysql BAKDIR=/backup/mysql/daily ###如果你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名 HOSTNAME=`uname -n` cd $DATADIR FILELIST=`cat $HOSTNAME-bin.index` ##计算行数,也就是文件数 COUNTER=0 for file in $FILELIST do COUNTER=`expr $COUNTER + 1 ` done NextNum=0 for file in $FILELIST do base=`basename $file` NextNum=`expr $NextNum + 1` if [ $NextNum -eq $COUNTER ] then echo "skip lastest" else dest=$BAKDIR/$base if(test -e $dest) then echo "skip exist $base" else echo "copying $base" cp $base $BAKDIR fi fi done echo "backup mysql binlog ok"
Zugriffseinstellungen
Damit das Skript ausgeführt werden kann, müssen der entsprechende Benutzername und das entsprechende Kennwort eingegeben werden Sowohl mysqladmin als auch mysqldump müssen festgelegt werden. Natürlich können sie in das Skript geschrieben werden, aber es ist sehr praktisch, dieses Skript auszuführen , dann müssen wir eine .my.cnf-Datei in /root (also dem Home-Verzeichnis des Root-Benutzers) mit dem folgenden Inhalt erstellen
Hinweis: Stellen Sie diese Datei so ein, dass sie nur von gelesen werden kann root. (chmod 600 .my.cnf) Diese Datei gibt an, dass das Programm den Root-Benutzer von MySQL verwendet, um Daten zu sichern, und das Passwort ist die entsprechende Einstellung. Auf diese Weise ist es nicht erforderlich, das zu schreiben Benutzer im Skriptnamen und Passwort.Automatisch ausführenDamit das Sicherungsprogramm automatisch ausgeführt wird, müssen wir es zu crontab hinzufügen.[mysqladmin] password =password user= root [mysqldump] user=root password=password
Es gibt zwei Methoden Eine Möglichkeit besteht darin, das Skript entsprechend Ihren Anforderungen hinzuzufügen. Die Option besteht darin, es in Verzeichnissen wie /etc/cron.daily und /etc/cron.weekly abzulegen. Eine Möglichkeit besteht darin, crontab -e zu verwenden Fügen Sie es in die geplanten Aufgaben des Root-Benutzers ein, z. B. ein vollständiges Backup jede Woche. Es wird jeden Tag um 3 Uhr morgens ausgeführt und das tägliche Backup wird jeden Montag bis Samstag um 3 Uhr morgens ausgeführt
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie ein MySQL-Backup-Skript funktioniert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!