常用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上也可以确保前端不受影响。
后续如果 有新的内容在添加进来。