justlikeit

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

全网服务器数据备份解决方案

 

一、需求描述

已知3台服务器主机名分别为:web01,backup,nfs01,主机信息如下表:

操作系统

服务器角色

IP地址

备注

CentOS release 6.10 (Final)

NFS客户端(nfs-server)

内网172.16.1.31/24  外网10.0.0.31/24

 

CentOS release 6.10 (Final)

NFS服务端(backup)

内网172.16.1.41/24  外网10.0.0.41/24

 

CentOS release 6.10 (Final)

NFS客户端(web01)

内网172.16.1.8/24  外网10.0.0.8/24

 

每天晚上00点整在Web服务器       上打包备份,网站程序目录及访问日志通过rsync命令推送备份服务器backup上备份保留。(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)

具体要求如下:

1)web服务器和备份服务器的备份目录都必须为/backup

2)要备份的系统配置文件包括但不限:

   a.定时任务服务的配置文件(/var/spool/cron/root)

   b.开机自启动的配置文件(/etc/rc.local)

   c.日常脚本的目录(/server/scripts)

   d.防火墙iptables的配置文件(/etc/sysconfig/iptables)

3)web服务器站点目录为(/application/nginx/html/blog)

4)Web服务器A访问日志的路径为(/application/nginx/logs)

5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

6)备份服务器上,保留最近7天的备份数据,同时保留6个月内每周一的所有数据。

7)备份服务器上要安装备份数据服务器的内网IP为目录保存备份,备份的文件安装时间名字保存。

8)需要确保备份的数据尽量完整争取,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员的邮箱中。

二、实现过程

实施前先完成rsync --deamon相关配置参考,rsync+sersync实现数据文件实时同步

完成用系统默认mail服务实现邮件发送相关配置

1、服务端测试(集群中的备份服务器)

[root@backup 10.0.0.8]# ps -ef |grep rsync

root       1351      1  0 Sep01 ?        00:00:00 rsync --daemon

[root@backup 10.0.0.8]# netstat -lntup|grep rsync

tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1351/rsync         

tcp        0      0 :::873                      :::*                        LISTEN      1351/rsync         

[root@backup 10.0.0.8]# telnet localhost 873

Trying ::1...

Connected to localhost.

Escape character is '^]'.

@RSYNCD: 30.0

2、客户端测试服务(指集群中有备份需求的服务器)

[root@nfs01 backup]# telnet 172.16.1.41 873

Trying 172.16.1.41...

Connected to 172.16.1.41.

Escape character is '^]'.

@RSYNCD: 30.0

开发脚本,实现打包,备份,推送,校验,删除

[root@web01 backup]# vim /server/scripts/backup.sh

IP=$(ifconfig|awk -F"[ :]+" 'NR==2{print $4}')

Path=/backup

if [ $(date +%w) -eq 6 ]

then

        Time="week_$(date +%F_%w)"

else

        Time="$(date +%F)"

fi

LANG=en

mkdir -p $Path/$IP/$Time/

cd / &&\

/bin/tar zcfh $Path/$IP/$Time/conf_back_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables &&\

/bin/tar zcfh $Path/$IP/$Time/script_back_$Time.tar.gz server/scripts &&\

md5sum /backup/$IP/$Time/*.tar.gz>$Path/$IP/$Time/flag_$Time.log

rsync -avz $Path/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password --bwlimit=10

find /backup -type f -mtime +7|xargs rm -f

添加backup.sh脚本到定时任务

[root@web01 backup]# crontab -l

00 00 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1  完成客户端的定时任务推送工作

3、服务端配置

开发脚本,实现校验,删除,发送邮件

[root@backup 10.0.0.8]# cat /server/scripts/check_and_del.sh

#check mdk5 flag and del +180day !name=*week_*_6* for moudle [backuup]

#!/usr/bin/sh

Path=/backup

IP=$(ifconfig|awk -F"[ :]+" 'NR==2{print $4}')

if [ $(date +%w) -eq 6 ]

then

        Time="week_$(date +%F_%w)"

else

        Time="$(date +%F)"

fi

LANG=en

 

find $Path -type f -name "flag_${Time}.log"|xargs md5sum -c>>$Path/result_${Time}.report

mail -s ${Time}'backup check report' yinxian*****@126.com<$Path/result_${Time}.report

find $Path -type f ! -name '*week_*_6.tar.gz' -mtime +180|xargs rm -f

添加定时任务,每天上午6点发送邮箱

[root@backup scripts]# crontab -l

* * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

* * * * * /bin/bash  /server/scripts/check_and_del.sh >/dev/null 2>&1

调试排错总结

发现的问题,时间同步会使rsync数据同步卡住

脚本排错可以在脚本加v,参数

查询服务器各项性能,CPU利用率,内存使用率

[root@backup backup]# tcpdump host 10.0.0.8 

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

16:47:33.938222 IP 10.0.0.1.64619 > 10.0.0.8.ssh: Flags [P.], seq 292073317:292073369, ack 3766568025, win 258, options [nop,nop,TS val 19117577 ecr 91556660], length 52

 

posted on 2019-04-22 18:19  justlikeit  阅读(879)  评论(0编辑  收藏  举报