首页 > 其他 > 详细

3)50台集群全网数据备份项目方案

时间:2017-02-08 19:27:52      阅读:517      评论:0      收藏:0      [点我收藏+]

1)提出问题:

1、发现公司问题现状,根据现状进行整理,思考解决方案

2)分析问题:

2、写出大体解决方案
3、进行上级授权(运维经理、CTO)
4、召集各个部门领导开会,演讲确定可行性,立项。
5、会议立项后,制定具体的执行方案

3)解决问题:

具体执行方案
1、采集信息
2、制定具体执行方案
3、根据制定方案细化,操作步骤
4、制定测试方案
5、制定预判出现问题,回退方案

公司有一台web server,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:

1)每天晚上00点整在web服务器A上打包备份网站程序目录并通过rsync命令推送到server B上备份保留(备份思路可以是现在本地按日期打包,然后再推到备份服务器上)。

具体要求如下:

1)web server A和backup server B的backup(备份)目录必须都为/backup。

2)web server 站点目录假定为(var/www/html)。

3)web server 本地仅保留7天内的备份。

4)backup server 上检查backup 结果是否正常,并将每天的backup结果发给管理员邮箱

5)backup server 上每周六的数据都保留,其他backup仅保留180天backup。

50台集群全网数据备份项目方案

1)需要备份的文件或目录有(原则上,只要是运维人员写入或更改的数据,都需要备份): /var/spool/cron/root ,/etc/rc.local ,/etc/sysconfig/iptables ,/var/www/html ,/app/logs

2)为了规范化,每台web服务器进行本地备份时都备份到/backup目录下

3)每台web服务器进行本地备份时,都备份到/backup下以本机IP地址命令的目录中

4)打的tarball文件名中需要包含执行当天的日期。

5)统一存储备份数据的服务器通过rsync daemon方式提供存储备份数据的目录/backup

6)由于web服务器本地的存储空间有限,需要将超过7天的备份数据删除。

7)为了方便的知道每次备份是否成功,我们需要做如下操作: 每台web服务器上检查是否成功 在存储备份数据的服务器上检查备份数据是否推送成功,并发邮件至管理员邮箱 8)由于备份服务器空间有限,需要删除超过180天的备份数据,但每周六的备份数据需要永久保留。

几个里程碑

1、在rsync备份服务器上,配置rsync服务,实现推送。 服务端成功配置rsync,并在客户端成功推送

2、在客户端NFS服务器上,实现打包,推送,删除,定时任务推送。 /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /var/www/html /app/logs 命令行要成功

脚本

[root@nfs01 172.16.1.31]# cat /server/scripts/bak.sh 
IP=$(ifconfig eth1|awk -F "[ :]+" ‘NR==2 {print $4}‘)
Path=/backup
if [ $(date +%w) -eq 0 ]
then
	Time=$(date +%F-%w -d "-1day")
else
	Time=$(date +%F -d "-1day")
fi
mkdir $Path/$IP/ -p
cd / &&tar zcfh $Path/$IP/backup_$Time.tar.gz  var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&md5sum $Path/$IP/backup_$Time.tar.gz >$Path/$IP/flag_$Time.log &&rsync -az $Path/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password &&find /backup/ -type f -mtime +7 \( -name "*.log" -o -name "*.tar.gz" \) |xargs rm -f

定时任务

[root@nfs01 backup]# crontab -l
#bak all server data
00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1

服务端:

[root@backup ~]# vim /server/scripts/check_and_del.sh 
IP=$(ifconfig eth1|awk -F "[ :]+" ‘NR==2 {print $4}‘)
Path=/backup
if [ $(date +%w) -eq 0 ]
then
    Time="week_$(date +%F_%w -d "-1day")"
else
    Time=$(date +%F -d "-1day")
fi
LANG=en
find /backup -type f -name "*${Time}*.log"|xargs md5sum -c >>$Path/${Time}_result.log 2>&1 
mail -s "$Time bak result" aaromail@163.com <$Path/${Time}_result.log
find /backup/ -type f -mtime +180 ! -name "*week*_6*" |xargs rm -f

3、在rsync备份服务器上,做检查,发邮件给管理员。

linux mail 命令参数:

使用mail发邮件时,必须先将sendmail服务启动。

mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人姓名 < 要发送的邮件内容

mail命令语法

mail -s “标题” 邮件地址< 文件

echo “正文”|mail -s “oldboy” 邮件地址

mutt命令用法

例:定期删除脚本

#!/bin/sh

#2017-01-22

#bu Aaron

#轮询删除Java日志,只保存最近7天日志

MailContent=/dev/shm/mailContent

LogFile=/dev/shm/cleanJavaLog.log

logDir=/home/java_*/log

MailList="system@okooo.net"

echo "轮询删除java 日志,只保存最近7天日志,详情查看附件!删除日期:`date +%Y%m%d`" >$MailContent

if [ -n "$LogDir" ];then

    find $LogDir -type f -mtime +7 > $LogFile 2>&1
    
    find $LogDir -type -mtime +7 -delete > $LogFile 2>&1
mutt -s "Clean the java log 7 days ago" $MailList -a $LogFile <$MailContent

else

echo "删除日志失败,log目录不存在"|mutt -s "Clean the java log Wrong" $MailList

fi

小结:当然还可以用php之类程序的来发邮件,网上有很多代码。

sendmail服务                    Linux
                                    mutt
                                    
qmail服务                           mail命令(客户端)

posfix                              mailq(查看发送队列)
                <<-------------              
exchange(win)                   Windows

发送:smtp 25端口                   forxmail

接受:pop3 110端口                  outlook

linux本地常见邮件服务有:

CentOS 5默认使用sendmail邮件服务,开启方式/etc/init.d/sendmail start

CentOS 6默认使用postfix邮件服务,开启方式/etc/init.d/postfix start

配置mail使用外部SMTP 发邮件

通过修改配置文件可以使用外部SMTP服务器,可以达到不适用sendmail/postfix等内部邮件服务而用外部的smtp服务器发送邮件的目的:

修改/ect/mail.rc最后一行加入。
set from=aaromail@163.com smtp=smtp.163.com smtp-auth-user=aaromail@163.com smtp-auth-password=chenbaojia88 smtp-auth=login

说明:

from是发送的邮件地址

smtp是发生的外部smtp服务器的地址

3)50台集群全网数据备份项目方案

原文:http://www.cnblogs.com/aofo/p/6379576.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!