L'opération de sauvegarde de la base de données est une étape très importante Pour le système en ligne, la base de données sans sauvegarde n'est pas sécurisée. En consultant des informations en ligne, cet article de blog réalise les opérations de sauvegarde complète, de sauvegarde incrémentielle et de sauvegarde planifiée dans le LAN de la base de données MySQL via des fichiers de script shell.
Présentation du serveur : centos 7.0
1. Fichier de script de sauvegarde de base de données unique
#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. Conservez 7 jours de historique Sauvegarde complète des données
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. Modifier les autorisations du script shell et exécuter
# 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"
# chmod 700 incre-backup.sh // 只允许管理员运行此脚本 #./mysql-backup.sh //执行脚本,测试一次
commande crontab pour exécuter automatiquement et régulièrement le fichier shell :
# crontab –e 添加: 00 01 * * */mysql-backup.sh // 每天凌晨1点执行
# yuminstall -y nfs-utils b)编辑exports文件 #vim/etc/exports #/home/nfs/192.168.248.0/24(rw,sync)
e) S'il ne démarre pas correctement, redémarrez les services rpcbind et nfs-server :
> 🎜>
a) Installez nfs et démarrez le service rpcbind
# yuminstall -y nfs-utils
b) Démarrez d'abord rpcbind
#SystemCTLENABLE RPCBind.service
C) puis démarrez le service RPCBind :
SystemCTLSTART RPCBind.service
D) Vérifiez si il existe un répertoire partagé sur le serveur NFS : répertoire (ici, montez le chemin du fichier de la
sauvegarde localeci-dessus sur le serveur) :
#mount -tnfs -o nolock,nfsvers= 1,vers=3 192.168.64.138 : /home/nfs /backup
Problème
: mount.nfs : descripteur de fichier NFS obsolète
Solution : Montez le fichier côté client Supprimez et remontez :
# umount –a
[Sauvegarde et restauration]
a. Restaurez la base de données gzip sur Mysq
#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 base de données : Spécifiez la base de données spécifique date-de-début : heure de début stop-date : heure de fin /mysql/data/mysql-bin.000001 : fichier binaire spécifié [Résumé] Méthode de sauvegarde de base est terminé, mais nous devons adopter différentes stratégies de sauvegarde en fonction de scénarios d'application spécifiques pour garantir la sécurité sans consommer trop de mémoire. Ce qui précède est le contenu de Centos7 implémentant la sauvegarde MySQL LAN (y compris la sauvegarde complète, la sauvegarde incrémentielle des journaux. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !