Maison  >  Article  >  base de données  >  Centos7 implémente la sauvegarde MySQL LAN (y compris la sauvegarde complète, la sauvegarde incrémentielle du journal)

Centos7 implémente la sauvegarde MySQL LAN (y compris la sauvegarde complète, la sauvegarde incrémentielle du journal)

黄舟
黄舟original
2017-02-28 13:20:081563parcourir

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

[Sauvegarde complète locale] 

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

[Sauvegarde incrémentielle des fichiers journaux]

1. Créer un fichier de script :

#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. Modifier les autorisations du fichier et exécuter


# chmod 700 incre-backup.sh  // 只允许管理员运行此脚本
  #./mysql-backup.sh                //执行脚本,测试一次
[Sauvegarde automatique]

La sauvegarde automatique est basée sur l'écriture du script ci-dessus, utilisez le système Linux

commande crontab pour exécuter automatiquement et régulièrement le fichier shell :

 # crontab –e
添加:
00 01 * * */mysql-backup.sh    // 每天凌晨1点执行
[Sauvegarde LAN à distance]


La sauvegarde LAN utilise NFS La sauvegarde du serveur est réalisée en partageant des données sur le réseau local et en les montant sur le serveur NFS. Tout comme nous partageons habituellement des fichiers, nous configurons la connexion réseau pour permettre le partage de nos fichiers. La mise en œuvre est la suivante :


1. Installation côté serveur NFS


a) Installez les packages logiciels requis pour le serveur NFS :


  # yuminstall -y nfs-utils
 
           b)编辑exports文件
           #vim/etc/exports
           #/home/nfs/192.168.248.0/24(rw,sync)
Un hôte avec le même numéro de réseau que 192.168.248.0/24 peut monter le répertoire /home/nfs/ sur le serveur NFS sur son propre système de fichiers

rw signifie lisible et inscriptible ; sync Indique une écriture synchrone

c) Démarrez le service nfs

#systemctlstart rpcbind.service

🎜> d) Confirmez que le serveur NFS démarre avec succès :

#rpcinfo –p

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 locale

ci-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) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn