您的位置:首页 > 其它

企业级整站集群数据备份项目方案详解

2017-04-10 20:02 483 查看

基本备份要求

要求:每天晚上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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: