zoukankan      html  css  js  c++  java
  • 企业级整站集群数据备份项目方案详解

    基本备份要求



    要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器。

    具体要求如下:
    1)所有服务器的备份目录必须都为/backup。
    2)要备份的系统配置文件包括但不限于:
    a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)。
    b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)。
    c.日常脚本的目录 (/server/scripts)(适合web和nfs服务器)。
    d.防火墙iptables的配置文件(/etc/sysconfig/iptables)。
    e.自己思考下还有什么需要备份呢?
    3)Web服务器站点目录假定为(/var/html/www)。
    4)Web服务器A访问日志路径假定为(/app/logs)
    5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
    6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
    7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
    8)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中

    规范项目文档、画逻辑图,提交审核

    思路:
    1.搭建backup服务器
     a)rsync服务

    2.搭建web01服务器
     a.验证rsync服务能否推送成功
     b.开发校本实现打包、备份、推送、校验、删除
     c.配置定时任务每天0点准时推送

    3.backup服务器:
     a.校本实现校验、删除、报警
     b.配置定时任务每天6点定时执行

    4.同理搭建其他服务器

    实施手册:


    一、rsync服务端配置即backup服务器的配置:


    1.配置rsync服务端

    vim /etc/rsyncd.conf

    #Rsync server
    ##rsyncd.conf
    uid = rsync # 客户端具有rsync用户的权限
    gid = rsync
    use chroot = no #与安全相关
    max connections = 20 #客户端最大连接数
    timeout = 600 #超时时间
    pid file = /var/run/rsyncd.pid #进程号文件
    lock file = /var/run/rsync.lock #锁文件
    log file = /var/log/rsyncd.log #log文件
    ignore errors #忽略错误
    read only = false #可读写
    list = false #不可远程列表
    hosts allow = 192.168.3/24 #允许的ip网段
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup #远程连接的用户
    secrets file = /etc/rsync.password #存放用户和密码的文件


    [backup] #模块
    comment = backup server by chinasoft 2017-04-10 #注释
    path = /backup #共享的目录


    注意:在配置/etc/rsyncd.conf时最好不要加注释,可能会出错
    *************************************************
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 20
    timeout = 600
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log


    [backup]
    path = /backup
    ignore errors
    read only = false
    list = false
    hosts allow = 192.168.3.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password

    *************************************************

    添加rsync用户
    useradd -s /sbin/nologin -M rsync
    创建目录
    mkdir /backup
    chown -R rsync.rsync /backup
    写入密码
    echo 'rsync_backup:rsyncpass' >/etc/rsync.password
    #配置密码文件/etc/.rsyncd.passwd,文件格式是明文的,所以文件权限设为600
    chmod 600 /etc/rsync.password


    #配置服务能够启动,监听在873/tcp端口上
    # rsync --daemon
    # ss -tunlp|grep rsync
    tcp    LISTEN     0      5                     :::873                  :::*      users:(("rsync",64141,5))
    tcp    LISTEN     0      5                      *:873                   *:*      users:(("rsync",64141,3))


    # chkconfig rsync on
    # service xinetd start
    或者写入rc.local
    echo '/usr/bin/rsync --daemon' >> /etc/rc.local


    二、rsync客户端配置步骤(需要备份的服务器如web/nfs/mysql等)

    1、创建密码文件
    echo "jack">/etc/rsync.password
    chmod 600 /etc/rsync.password
    mkdir /backup

    添加配置文件

    vim /etc/rsyncd.conf


    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 20
    timeout = 600
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log

    [backup]
    path = /backup
    ignore errors
    read only = false
    list = false
    hosts allow = 192.168.3.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password

    2、rsync测试

    rsync -avz /backup/ rsync://rsync_backup@192.168.3.12/backup --password-file=/etc/rsync.password


    报错:
    # rsync -avz /backup/ rsync://rsync_backup@192.168.3.12/backup/ --password-file=/etc/rsync.password 
    @ERROR: auth failed on module backup
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

    解决办法:
    是因为服务端配置文件加了注释,去掉注释重启即可

    md5指纹测试,对某个文件生成md5码,然后修改文件发现md5sum -c验证不通过
    # md5sum /etc/hosts > zhiwen.txt
    # md5sum -c zhiwen.txt
    /etc/hosts: OK
    # echo "#" >> /etc/hosts
    # md5sum -c zhiwen.txt 
    /etc/hosts: FAILED
    md5sum: WARNING: 1 computed checksum did NOT match

    创建测试目录:
    mkdir -p /var/html/www
    touch /var/html/www/{1..10}
    mkdir /app/logs/ -p
    touch /app/logs/{a..g}
    mkdir -p /server/scripts

    压缩文件
    # tar zcvfh /backup/sys_config_$(date +%F).tar.gz /var/spool/cron /etc/rc.local /server/scripts

    客户端自动备份脚本:
    vim /server/scripts/bak.sh

    #!/bin/bash
    export PATH=/bin:/sbin/bin:/usr/sbin:/usr/bin
    IP=$(/sbin/ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}')
    bakpath=/backup
    /bin/mkdir $bakpath/$IP -p

    if [ $(date +%w) -eq 2 ];then
      date="$(date +%F -d "-1day")_week1"
    else
      date="$(date +%F -d "-1day")"
    fi

    cd / &&
    /bin/tar zcfh $bakpath/$IP/sys_config_$(date +%F).tar.gz var/spool/cron etc/rc.local server/scripts &&
    /bin/tar zcf $bakpath/$IP/web_data_$(date +%F).tar.gz var/html/www/ &&
    /bin/tar zcf $bakpath/$IP/access_log_$(date +%F).tar.gz app/logs &&
    find $bakpath -type f -name "*.tar.gz"|xargs md5sum > $bakpath/$IP/flag_$(date +%F)

    # bak data to backupserer
    rsync -avz $bakpath/ rsync://rsync_backup@192.168.3.12/backup --password-file=/etc/rsync.password

    # del data 7 days ago
    find $bakpath -type f -mtime +7|xargs rm -f

    添加计划任务,每天一次备份并且向backup服务器推送
    00 00 * * * /bin/bash /server/scripts/bak.sh > /dev/null 2>&1

    三、在backup备份服务器上添加检测功能并且进行邮件发送报警


    添加一行vim /etc/mail.rc

    set from=username@163.com smtp=smtp.163.com smtp-auth-user=pass smtp-auth-password=reblue.520 smtp-auth=login

    测试邮件是否能够正常发送,这个配置通过163.com向qq发送信息是ok的,需要在163邮箱配置中开启smtp发送
    echo 'yunva telnolegy infomation'|mail -s 'yunva.com' 111@qq.com

    添加自动发送邮件脚本:
    vim /server/scripts/checkbak.sh

    #!/bin/bash
    if [ $(date +%w) -eq 2 ];then
      date="$(date +%F -d "-1day")_week1"
    else
      date="$(date +%F -d "-1day")"
    fi

    find /backup/ -name "flag_${date}*" |xargs md5sum -c &>>/tmp/mail_$(date +%F).log
    find /backup/ -type f -name "*.tar.gz" -a ! -name "*week1*" -mtime +1 | xargs rm -f

    mail -s "backup `date`" 111@qq.com < /tmp/mail_$(date +%F).log
    # cp命令前面一定要加 表示命令隔开,如果不加shell会认为是一个命令
    cp /tmp/mail_$(date +%F).log /tmp/mail_$(date +%F).log.ori
    >/tmp/mail_$(date +%F).log


    添加计划任务,每天6点检查并且发送邮件提醒
    00 06 * * * /bin/bash /server/scripts/checkbak.sh > /dev/null 2>&1

  • 相关阅读:
    System.Web.Mvc.RoutePrefixAttribute.cs
    HTML5: 实现调用系统拍照或者选择照片并预览
    System.DateTime.cs
    System.Math.cs
    System.Web.UI.WebControls.FileUpload.cs
    系统过程分析
    java实现数字黑洞
    java实现数字黑洞
    java实现数字黑洞
    java实现数字黑洞
  • 原文地址:https://www.cnblogs.com/reblue520/p/6784493.html
Copyright © 2011-2022 走看看