zoukankan      html  css  js  c++  java
  • 常用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上也可以确保前端不受影响。

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

  • 相关阅读:
    Pipe
    An Easy Problem?!
    Kadj Squares
    Space Ant
    Intersection
    让网页变为可编辑状态
    typescript入门基础
    大家都能看懂的 canvas基础教程
    数组的foreach方法和jQuery中的each方法
    html单行、多行文本溢出隐藏
  • 原文地址:https://www.cnblogs.com/davidz/p/13231108.html
Copyright © 2011-2022 走看看