• 第三十八天-一道例题企业级备份方案


    一、例题

      某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据备份,这样web服务器数据丢失可以进行恢复。
      要求如下:
      每天晚上00点整在web服务器A上打包备份系统配置文件、网站程序目录及访问日志,并通过rsync命令推送到服务器B上备份保留(备份的思路可以是先在本地按日期打包,然后再推到备份服务器B上)。

      问题一:实现web服务器A数据备份到服务器B
      要求如下:
      1、web服务器A和备份服务器B的备份目录必须都为/backup
      2、系统配置文件包括但不限于:
          a、定时任务服务的配置文件/var/spool/cron/root
          b、开机自启动的配置文件/etc/rc.local
          c、日常脚本目录/server/scripts
          d、防火墙iptables配置文件/etc/sysconfig/iptables
          e、自己思考下还有什么需要备份?
      3、web服务器站点目录假定为/var/html/www
      4、web服务器A访问日志路径假定为/app/logs
      5、web服务器保留打包后的七天的备份数据即可(本地留存不多余7天),备份服务器B上保留6个月的数据备份。
      6、备份服务器B上要按照备份数据服务器的IP为目录保存,打包的文件按照时间名字保存。


    二、实施步骤
    在B上搭建rsync服务
    1、编辑rsync服务配置文件

    [root@B /]#vim /etc/rsyncd.conf

    2、查看rsync服务配置文件是否配置正确

    [root@B /]#cat /etc/rsyncd.conf
    #rsync_config_______________start
    ##rsyncd.conf start##
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    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.1.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    #rsync_config_______________end 

    3、创建同步目录,并修改其所属用户和组

    [root@B /]# mkdir /backup/
    [root@B /]# chown rsync.rsync -R /backup/

    4、创建rsync服务虚拟用户和密码文件

    [root@B /]# echo "rsync_backup:123456" >/etc/rsync.password
    [root@B /]# chmod 600 /etc/rsync.password
    [root@B /]# cat /etc/rsync.password
    rsync_backup:123456
    [root@B /]# rsync --daemon         #启动rsync服务
    [root@B /]# lsof -i :873           #查看rsync服务是否启动成功
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rsync   1728 root    4u  IPv4  14284      0t0  TCP *:rsync (LISTEN)
    rsync   1728 root    5u  IPv6  14285      0t0  TCP *:rsync (LISTEN)

    5、关闭防火墙和selinux

    [root@B /]# /etc/init.d/iptables stop
    [root@B /]# setenforce 0
    [root@B /]# getenforce
    Permissive

    6、在备份端编写简单脚本,删除180天以前的备份,并将脚本加到定时任务中

    [root@B scripts]# cat rmfile.sh
    #!/bin/bash
    
    find /backup/ -type f -name "*.tar.gz" -mtime +180|xargs rm -f
    
    [root@B scripts]# crontab -l
    #########
    00 00 * * *  sh /server/scripts/rmfile.sh >/dev/null 2>&1


    在A上的配置
    1、创建备份目录,并修改目录所属用户和组

    [root@A /]# mkdir backup
    [root@A /]# chown rsync.rsync -R backup/
    [root@A /]# ls -ld backup/
    drwxr-xr-x. 2 rsync rsync 4096 12月 26 02:13 backup/

     2、创建rsync密码文件

    [root@A /]# echo "123456" >/etc/rsync.password
    [root@A /]# chmod 600 /etc/rsync.password
    [root@A /]# cat /etc/rsync.password
    123456

    3、测试同步是否成功

    [root@A /]# cd backup/
    [root@A backup]# ls
    [root@A backup]# touch test.txt
    [root@A backup]# echo 124 >test.txt
    [root@A backup]# cat test.txt
    124
    [root@A backup]# rsync -avz /backup/ rsync_backup@192.168.1.115::backup --password-file=/etc/rsync.password
    sending incremental file list
    ./
    test.txt
    
    sent 107 bytes  received 30 bytes  274.00 bytes/sec
    total size is 4  speedup is 0.03

    4、在A上编写打包同步脚本
    4.1、打包同步脚本

    [root@A scripts]# cat bak.sh
    #!/bin/sh
    
    ip=`ifconfig |awk -F '[ :]+' 'NR==2{print $4}'`
    
    [  ! -d /backup/$ip ] && mkdir -p /backup/$ip
    cd /backup/$ip &&
    tar czf bak_$(date +%F).tar.gz /var/spool/cron/ /etc/rc.local /server/scripts/ /etc/sysconfig/iptables
    
    rsync -az /backup/ rsync_backup@192.168.1.115::backup --password-file=/etc/rsync.password
    
    find /backup -type f -name "*.tar.gz" -mtime +7 |xargs rm -f

    4.2、添加到定时任务

    [root@A scripts]# crontab -l
    ####back system config file and web site  to B server####
    00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1 

    4.3、查看打包备份效果

    [root@A scripts]# cd /backup/
    [root@A backup]# ls
    192.168.1.113
    [root@A backup]# cd 192.168.1.113/
    [root@A 192.168.1.113]# ls
    bak_2015-12-26.tar.gz
    
    [root@B backup]# ls
    192.168.1.113
    [root@B backup]# cd 192.168.1.113/
    [root@B 192.168.1.113]# ls
    bak_2015-12-26.tar.gz


    问题二、如果有100台服务器需要备份数据,该如何指定备份方案及具体实施?
      解答:
      思路:很多同学说在web客户端备份完毕发邮件给管理员,有100台客户端,老大疯了,早晨开邮箱100封垃圾邮件,这个思路不对。
      正确思路:服务器端检查结果:
      1)du -sh /backup/ip/当天的备份文件 >/tmp/bak.log
      2)打包,推送,再推送一个flag(ip+时间的文件名),本地清理7天前的。
      3)手工或定时的杰宝,模拟数据恢复来确认数据备份的完整性。

    问题三、如何在备份数据后,把备份的成功及失败结果信息发给系统管理员邮箱中?
    问题四、假如是对NFS共享服务器的数据做备份,如何实现实时的数据同步?

  • 相关阅读:
    服务器运行jupyter,本地浏览器打开
    转载--对batch normalization的理解
    Deep Neural Networks for YouTube Recommendations YouTube的经典推荐框架
    IFrame与window对象(contentWindow)
    vue之watch的理解
    关于npm
    简单的输入法效果(类似百度输入时候的智能检索)
    Js屏蔽网页复制,不能使用右键菜单,禁止复制网页内容,不能选中内容,右键不让用,无法拖拽选择,这么多功能,用JS一句代码就搞定了
    移动端关于计算rem的flexible.js
    解决安卓手机在input获取焦点时候固定定位元素被输入键盘给顶到顶部
  • 原文地址:https://www.cnblogs.com/migongci0412/p/5079578.html
Copyright © 2020-2023  润新知