Heim  >  Artikel  >  Datenbank  >  Centos7 implementiert die MySQL-LAN-Sicherung (einschließlich vollständiger Sicherung und inkrementeller Protokollsicherung).

Centos7 implementiert die MySQL-LAN-Sicherung (einschließlich vollständiger Sicherung und inkrementeller Protokollsicherung).

黄舟
黄舟Original
2017-02-28 13:20:081530Durchsuche

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

[Lokale Vollsicherung] 

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                //执行脚本,测试一次

[Inkrementelle Sicherung von Protokolldateien]

1. Skriptdatei erstellen:

#vi incre-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]


LAN-Backup verwendet NFS Die Serversicherung erfolgt durch die gemeinsame Nutzung von Daten im LAN und deren Bereitstellung auf dem NFS-Server. Genau wie wir normalerweise Dateien freigeben, konfigurieren wir die Netzwerkverbindung so, dass unsere Dateien gemeinsam genutzt werden können. Die Implementierung ist wie folgt:


1. NFS-serverseitige Installation


a) Installieren Sie die für den NFS-Server erforderlichen Softwarepakete:


  # 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 /backup

Problem

: 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

b

#/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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn