Der Datenbanksicherungsvorgang ist ein sehr wichtiger Schritt. Für das Online-System ist die Datenbank ohne Sicherung nicht sicher. Durch die Konsultation von Online-Informationen realisiert dieser Blog-Beitrag die vollständige Sicherung, inkrementelle Sicherung und geplante Sicherungsvorgänge im LAN der MySQL-Datenbank über Shell-Skriptdateien.
Servereinführung: Centos 7.0
1. Einzelne Datenbank-Backup-Skriptdatei
#vi mysql-backup.sh
db_user="root" #本服务器用户名密码 db_passwd="root" db_host="192.168.64.137" #本服务器地址 db_name="whp" #需要备份数据库名称 # the directory for story your backup file. backup_dir="/backup" #备份以后放入的文件路径 # date format for backup file (dd-mm-yyyy) time="$(date +"%Y-%m-%d-%H-%M-%S")" # mysql, mysqldump and some other bin's path MYSQL="/application/mysql/bin/mysql" MYSQLDUMP="/application/mysql/bin/mysqldump" GZIP="/bin/gzip" $MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db_name | $GZIP -9 > "$backup_dir/$db_name"_"$time.gz"
2. 7 Tage aufbewahren Verlauf Vollständige Datensicherung
db_user="root" db_passwd="root" db_host="localhost" # the directory for story your backup file. backup_dir="/application/backup/" # date format for backup file (dd-mm-yyyy) time="$(date +"%H-%M-%S-%m-%d-%y")" # mysql, mysqldump and some other bin's path MYSQL="/application/mysql/bin/mysql" MYSQLDUMP="/application/mysql/bin/mysqldump" MKDIR="/bin/mkdir" RM="/bin/rm" MV="/bin/mv" GZIP="/bin/gzip" # check the directory for store backup is writeable test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit # the directory for story the newest backup test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/" echo "Start to Backup..."; # get all databases # don't backup information_schema、performance_schema all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')" all_db=${all_db//information_schema/}; all_db=${all_db//performance_schema/}; for db in $all_db do $MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz" done # delete the oldest backup test -d "$backup_dir/backup.7/" && $RM -rf "$backup_dir/backup.7" # rotate backup directory for int in 6 5 4 3 2 1 0 do if(test -d "$backup_dir"/backup."$int") then next_int=`expr $int + 1` $MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int" fi done echo "BackUp Success!" exit 0;
3. Shell-Skriptberechtigungen ändern und ausführen
# chmod 700 mysql-backup.sh // 只允许管理员运行此脚本 #./mysql-backup.sh //执行脚本,测试一次
#执行mysqladmin执行刷新日志文件 /application/mysql/bin/mysqladmin -uroot -proot flush-logs #DATADIR=/var/lib/mysql DATADIR=/application/data #获取数据文件路径 BAKDIR=/backup #获取要备份的数据目标文件路径 ###如果mysql bin log你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名 #HOSTNAME=`uname -n` cd $DATADIR #转入到/application/data 查询mysql-bin.index文件 #FILELIST=`cat $HOSTNAME-bin.index` FILELIST=`cat mysql-bin.index` ## COUNTER number 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"2. Dateiberechtigungen ändern und
# chmod 700 incre-backup.sh // 只允许管理员运行此脚本 #./mysql-backup.sh //执行脚本,测试一次[Automatische Sicherung] Die automatische Sicherung basiert auf dem oben genannten Skript. Verwenden Sie den Linux-System-
crontab-Befehl , um die Shell-Datei automatisch regelmäßig auszuführen:
# crontab –e 添加: 00 01 * * */mysql-backup.sh // 每天凌晨1点执行[Remote-LAN-Backup]
# yuminstall -y nfs-utils b)编辑exports文件 #vim/etc/exports #/home/nfs/192.168.248.0/24(rw,sync)Ein Host mit derselben Netzwerknummer wie 192.168.248.0/24 kann das Verzeichnis /home/nfs/ auf dem NFS-Server in sein eigenes Dateisystem einbinden rw bedeutet lesbar und beschreibbar; sync Zeigt synchrones Schreiben an c) Starten Sie den NFS-Dienst #systemctlstart rpcbind.service 🎜> d) Bestätigen Sie, dass der NFS-Server erfolgreich gestartet wird: #rpcinfo –p
e) Wenn der Start nicht erfolgreich ist, starten Sie die Dienste rpcbind und nfs-server neu:
> 🎜>
a) NFS installieren und rpcbind-Dienst starten
# yuminstall -y nfs-utils
b) Zuerst rpcbind starten 🎜> #SystemCTLENABLE RPCBind. service
C) und starten Sie dann den RPCBind-Dienst:
SystemCTLSTART RPCBind.service
D) Überprüfen Sie, ob dies der Fall ist ein freigegebenes Verzeichnis auf dem NFS-Server: Verzeichnis (hier den Dateipfad der oben genannten
lokalen Sicherung
auf dem Server mounten): #mount -tnfs -o nolock,nfsvers=1, vers=3 192.168.64.138: /home/nfs /backupProblem
: mount.nfs: Veraltetes NFS-Dateihandle Lösung: Mounten Die Datei auf der Client-Seite entfernen und erneut bereitstellen: # umount –a [Sichern und Wiederherstellen] a. Stellen Sie die gzip-Datenbank auf Mysq wieder her #gunzip#/mysql/bin/mysqlbinlog--database=fox --start-date="2013-01-22 5:00:00" --stop-date="2013-01-22 9:00:00 "/mysql/data/mysql-bin.000001 | /mysql/bin/mysql -u root -p123456 –f
Datenbank: Geben Sie die spezifische Datenbank an
Startdatum: Startzeit
Stop-Datum: Endzeit
/mysql/data/mysql-bin.000001: angegebene Binärdatei
[Zusammenfassung]
Grundlegende Sicherungsmethode It ist abgeschlossen, aber wir müssen je nach Anwendungsszenario unterschiedliche Sicherungsstrategien anwenden, um die Sicherheit zu gewährleisten, ohne zu viel Speicher zu verbrauchen.
Das Obige ist der Inhalt der MySQL-LAN-Sicherung durch Centos7 (einschließlich vollständiger Sicherung und inkrementeller Protokollsicherung). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!