day34--综合架构全网备份项目

企业中NFS配置方式
       a. 常规配置   /data  172.16.1.0/24(rw,sync,xxx)
       b. 只读模式   /data  172.16.1.0/24(ro,sync,xxx)  限制开发人员权力
          运维人员 --- 操作线上服务器权力  开发人员 --- 不要有连接线上服务器权力
          代码上线 --- 网站访问报错 --- 代码回退
          
          线上环境(nginx)  线下环境(nginx) 不统一  网站数据目录(线上) --- 开发人员可以看到
          cat 数据库 
       c. 特殊配置   /data  172.16.1.0/24(rw,sync,anonuid,anongid)  -- web --- blog
exportfs -rv 平滑重启 --- 端口号码不会重新进行注册
       平滑重启:
       1) 当有数据传输时,等数据传输完毕,就会断开重新连接  (当有数据进行传输,就会等数据传输完毕,进行重启)
          nginx网站服务  用户(客户端) --- 网站 nginx (服务端)
          restart ---  强制将所有连接断开
          reload  ---  连接断开 

          nfs: 
          restart 
          客户端  --- 服务端   90s
          reload
          客户端  --- 服务端   没有延迟

       2) 无数据传输时,直接断开重新连接      
          重启:无论是否数据进行传输,都会强制断进行重新连接 
          重启肯定nfs向rpc重新注册端口,平滑重启,按照字面意思,也相当于重启(等待数据传输完毕),肯定向rpc重新注册端口
       
           rpc注册端口--原理 

           服务端: 
           01. 启动rpcbind服务  可以让nfs向rpcbind进行注册
           02. 启动nfs服务      端口和进行信息注册过程
           03. 服务重启         才会再次重新注册端口信息
           客户端: 
           01. 启动rpcbind服务  
           02. 执行mount命令进行挂载
           03. 客户端挂载点存储数据, 会通过网络将数据存储到存储服务器

NFS服务常见问题
    01. 防火墙服务开启,          会影响远程挂载操作
    02. NFS服务启动顺序不正确     nfs服务都没有启动
    03. 文件句柄错误
        Stale file handle
        客户端挂载这存储目录, 服务端将存储目录删除了
    04. NFS服务尽量平滑重启      不要直接重启
        会有一个挂载写入数据90s延迟
全网备份项目部署说明
    第一个里程: 对工作任务进行确认             笔记记录      录音记录
    第二个里程: 根据需求编写文档资料           部署步骤规划  时间规划(2个月) 人员规划  简单部署方案
    第三个里程: 和领导开会(相关人员进行召集)  
    第四个里程: 根据规划完成任务               阶段汇报  
    第五个里程: 任务完成后项目文档总结         项目总结会议  人员培训
全网备份需求完成阶段
    1) 所有服务器的备份目录必须都为/backup
       mkdir /backup -p
    
    2) 要备份的系统配置文件包括但不限于:
       a) 定时任务服务的配置文件       (/var/spool/cron/root)  (适合web和nfs服务器)。
       b) 开机自启动的配置文件            (/etc/rc.local)         (适合web和nfs服务器)。
       c) 日常脚本的目录               (/server/scripts)。
       d) 防火墙iptables的配置文件      (/etc/sysconfig/iptables)。
       e) 自己思考下还有什么需要备份呢?
    
       mkdir -p /server/scripts
       touch /etc/sysconfig/iptables
       方法一: 压缩数据---绝对路径
       tar zcvhPf /backup/system_backup_$(date +%F_%A).tar.gz  /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
       方法二: 压缩数据---相对路径
       cd /
       tar zcvhf /backup/system_backup_$(date +%F_%A).tar.gz  ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables

    3) Web服务器站点目录假定为(/var/html/www)。
       mkdir -p /var/html/www/
       tar zcvPhf /backup/web_info_backup_$(date +%F_%A).tar.gz /var/html/www/

?   4) Web服务器访问日志路径假定为(/app/logs)
       mkdir -p /app/logs
       tar zcvPhf /backup/web_log_backup_$(date +%F_%A).tar.gz /app/logs/

?   5) Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
       find /backup -type f -name "*.tar.gz" -mtime +7 -delete

?   6) 备份服务器上,保留6个月之内数据,同时保留6个月之前每周一的所有数据副本
       find /backup -type f -name "*.tar.gz" -mtime +180 -delete
       两种方法: 保留周一数据信息
       方法一: 根据文件名称信息进行保留
       date +%F_%w date +%F_%a date +%F_%A
       find /backup -type f -name "*.tar.gz" -mtime +180  ! -iname "*_monday.tar.gz"  -delete
       方法二: 可以将每周一数据进行单独保存     
       find /backup -type f  -iname "*_monday.tar.gz" | xargs mv -t /backup_monday
       find /backup -type f -name "*.tar.gz" -mtime +180  -delete
       
    7) 备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
       方法一: 在备份客户端主机上,backup目录中创建有IP地址信息子目录
       cd /
       tar zcvhf /backup/172.16.1.31/system_backup_$(date +%F_%A).tar.gz  ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
       rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password
       
       方法二: 利用rsync命令创建子目录功能
       rsync -avz /backup/ [email protected]::backup/172.16.1.31/ --password-file=/etc/rsync.password
    
    8) 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。
       a 验证数据传输完整性
       第一个步骤: 客户端生成文件指纹信息
       md5sum system_backup_2019-08-19_Monday.tar.gz 
       8b771973e1a6ca8069e4240d1ee239a7  system_backup_2019-08-19_Monday.tar.gz
       生成指纹信息
       find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/172.16.1.31/finger.txt

       第二个步骤: 服务端对文件指纹信息进行对比
       find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_data.txt
       
       
       b 对验证结果进行邮件告知运维人员
       linux系统发送邮件原理  
       邮件服务客户端  --->  邮件服务服务端 ---> QQ邮箱
       foxmail         --->  QQ企业邮箱     ---> 发送邮件
       linux postfix   --->  QQ邮箱 163邮箱 ---> 其他人发送邮件
       
       第一个里程: 配置邮箱信息: 163 QQ
       QQ:  授权码: izpcjhqnzqvvbhfi  开启IMAP/SMTP服务
       163: 授权码: oldboy123         开启IMAP/SMTP服务
       
       第二个里程: linux系统中进行邮件配置
       vim /etc/mail.rc
       set from=邮箱地址@qq.com             <-- 连接邮箱名称信息
       set smtp=smtp.qq.com                 <-- 设置邮箱服务地址信息
       set smtp-auth-user=邮箱地址@qq.com
       set smtp-auth-password=              <-- 邮箱授权密码 
       set smtp-auth=login                  <-- 指定进行远程登录连接

       # QQ mail config
       set [email protected]
       set smtp=smtp.qq.com                 
       set [email protected]
       set smtp-auth-password=izpcjhqnzqvvbhfi
       set smtp-auth=login
       ## 163 mail config
       #set [email protected]
       #set smtp=smtp.163.com
       #set [email protected]
       #set smtp-auth-password=oldboy123
       #set smtp-auth=login
 
       第三个里程: 重启系统邮件服务
       systemctl restart postfix.service 
       
       第四个里程: 进行邮件发送测试
       echo oldboy63|mail -s "test_mail" [email protected] 
       mail -s "test_mail" [email protected] /backup/172.16.1.31/finger.txt
    
    # 03. push date info
    rsync -avz /backup  [email protected]::backup  --password-file=/etc/rsync.password
    
    # 04. delete 7 day ago
    find /backup/ -type f -name "*.tar.gz" -mtime +7 -delete
    
    完善之后脚本:
    [root@nfs01 backup]# cat /server/scripts/backup.sh 
    #!/bin/bash
    
    Backup_Dir="/backup"
    Backup_IP="$(hostname -i)"
    
    
    # 00. create dir info
    mkdir $Backup_Dir/$Backup_IP -p
    mkdir -p /server/scripts
    touch /etc/sysconfig/iptables
    
    # 01. compress data
    tar zchPf $Backup_Dir/$Backup_IP/system_backup_$(date +%F_%A).tar.gz  /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
        
    # 02. create finger file 
    find $Backup_Dir/ -type f -name "*.tar.gz"|xargs md5sum >$Backup_Dir/$Backup_IP/finger.txt
    
    # 03. push date info
    rsync -az $Backup_Dir/  [email protected]::backup  --password-file=/etc/rsync.password
    
    # 04. delete 7 day ago
    find $Backup_Dir/ -type f -name "*.tar.gz" -mtime +7 -delete

    
    备份服务服务端脚本:
    #!/bin/bash
    
    #01. check data info    
    find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_data.txt
    
    #02. sent notify mail
    mail -s "backup_data_notify" [email protected] 

你可能感兴趣的:(day34--综合架构全网备份项目)