常用web数据备份架构(centos 7)

 

 

大概是这么一个架构图。

两台web服务器公用一台NFS服务器的数据。通过NFS服务器可以直接挂载数据到WEB本机。然后重点是要做RSYNC数据同步。

同步要求:

1、每天自动备份本地的web数据,包括 /www/html /logs/ /sysconfig/ 等等吧,通过tar打包的方式。

2、每天自动同步数据到rsync服务器上面,并删除rsync服务器上大于180天的*.tar.gz 数据。

3、用md5sum 做好数据校验的工作。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在这里先提一嘴rsync服务的端口是873,但是客户端的端口好像是随机的。所以我一般会在服务器上关闭防火墙,命令是systemctl stop firewall-cmd.service

这样防火墙就关闭了。 systemctl disable firewall-cmd.service关闭开机自启。 

通过firewall-cmd --state查看防火墙的状态。显示 no running就可以了。

然后还有selinux的防火墙,也是要关闭的,这里也要提一嘴,不然莫名其妙的就连不上了。

 

参照这个图片来解决这个问题。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

继续上面的说话,是已经安装好了NFS和rsync服务器的。而且都是已经可以用的啦。

这里说一下NFS 挂载命令。

 rpm -aq nfs-utils rpcbind

检查是否安装

yum -y install nfs-utils

yum安装

mount -t nfs 192.168.10.219:/root/data /mnt

挂载NFS (有时候挂载不上,检查一下是不是防火墙阻挡吧,把防火墙关闭)

 

 df  -h 检查是否挂载成功。

可以加到开机启动项,避免每次都要敲。

修改这个文件  /etc/rc.d/rc.local(注意:centos 7 里默认rc.local是没有执行权限的,要修改一下。)

 

 

 

 以上权限注意修改。

基本上NFS 就没什么问题,两台web作为前端就行了。

然后就是rsync的备份同步方案。主要就是一些shell脚本的编写。

 

 一共三个脚本,第一个是备份脚本,备份/www  /html /logs 等目录。

然后校验备份的结果,用MD5SUM来校验。

最后删除在NFS上超过180天的数据。但是resync服务器的数据可以保留长时间一点。

这个脚本的大概意思就是通过每台本机的IP地址来创建一个目录,然后把本机的数据放进去,通过获取每天不同的日期做一次备份。备份完了之后,然后同步到rsync服务器上。在备份的过程中对每个tar.gz的包做一个MD5的校验,并获得MD5值。

#!/bin/sh
IP=$(ifconfig |awk -F '[ :]+' 'NR==2 {print $3}')
echo $IP
lujing="/backup/$IP"
echo $lujing
[ ! -d $lujing ] && mkdir $lujing -p
#backup
date=$(date +%F)

tar zcf $lujing/www_$date.tar.gz /var/html/wwww/
tar zcf $lujing/logs_$date.tar.gz /app/logs/
tar zcf $lujing/conf_$date.tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/
touch $lujing/flag_$(date +%F)
find /backup/ -type f -name "*$(date +%F).tar.gz"|xargs md5sum >/$lujing/flag_$(date +%F)
#to backup server
#delete
rsync -az /backup/ admin@192.168.10.222::common  --password-file=/root/passwd
find /backup -type f -name "*.tar.gz" -mtime +7|xargs rm -f

这个是一个通过MD5 做校验,如果校验成功,则说明数据备份完整。没有问题。如果有问题,自动通过sendmail发送到我的QQ邮箱。

#!/bin/sh
find /backup -type f -name "flag_$(date +%F)" |xargs md5sum -c |grep "失败" >/opt/mail_body_$(date +%F).txt
mail -s "$(date +%U%T) back message" 234145882@qq.com </opt/mail_body_$(date +%F).txt

这里就是通过条件查找,然后删除超过180天的tar.gz包。

/bin/find /backup -type f -name "*.tar.gz" -mtime +180|xargs rm -f

 

 下面发一下效果图。

 

 备份同步出来是这种效果。

 

然后做定时任务,确保脚本的执行,我是每天执行一次。

用这个命令crontab -e

 

 查看  crontab -l

 

 

大概就是这些内容就可以完成一个最基本的备份方案了,数据放在NFS上也可以确保前端不受影响。

后续如果 有新的内容在添加进来。

posted @ 2020-07-09 15:00  逍遥姐夫  阅读(418)  评论(0编辑  收藏  举报