备份服务器实战
1、基本备份要求
已知3台服务器主机名分别为web01、backup 、nfs01,主机信息见下表:
服务器说明 |
外网IP(NAT) |
内网IP(NAT) |
主机名称 |
nginx web服务器 |
10.0.0.7/24 |
172.16.1.7/24 |
web01 |
NFS存储服务器 |
10.0.0.31/24 |
172.16.1.31/24 |
nfs01 |
rsync备份服务器 |
10.0.0.41/24 |
172.16.1.41/24 |
backup |
要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器。
具体要求如下:
1)所有服务器的备份目录必须都为/backup。 mkdir –p /backup
[root@backup ~]# mkdir -p /backup/$(hostname -i) #创建备份目录在backup上
2)要备份的系统配置文件包括但不限于:
a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)。
b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)。
c.日常脚本的目录 (/server/scripts)。
d.防火墙iptables的配置文件(/etc/sysconfig/iptables)。
[root@nfs01 backup]# mkdir -p /server/scripts
[root@nfs01 backup]# mkdir -p /app/logs
[root@web01 scripts]# tar -zchvf /backup/172.16.1.7/backup.`date +%F_星期%w --date="-1 day"`.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts/ /etc/sysconfig/iptables-config /app/logs
[root@web01 /]# md5sum /backup/172.16.1.7/backup.`date +%F_星期%w --date="-1 day"`.tar.gz >/backup/172.16.1.7/ginfer.txt
[root@nfs01 tmp]# mkdir -p /var/html/www
[root@nfs01 /]# tar -zcvhf /backup/172.16.1.7/html.`date +%F_星期%w --date="-1 day"`.tar.gz /var/html/www/
[root@web01 /]# md5sum /backup/172.16.1.7/html.`date +%F_星期%w --date="-1 day"`.tar.gz >/backup/172.16.1.7/html_finger.txt
e.自己思考下还有什么需要备份呢?
3)Web服务器站点目录假定为(/var/html/www)。
4)Web服务器A访问日志路径假定为(/app/logs)
5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
[root@web01 backup]# find /backup/ -type f -mtime +7 -delete
6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
6个月以内 周一 ~ 周日
6个月以前 周一 ~ 周日 周一保留 周二~周日 删除
[root@web01 backup]# find /backup/ -not -name *_星期1.tar.gz -mtime +180 | xargs rm -rf
7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
[root@web01 etc]# chmod 600 /etc/rsync.password #修改web密码文件属性
[root@web01 /]# rsync -az /backup/ rsync_backup@10.0.0.41::backup/$(hostname -i) --password-file=/etc/rsync.password
8)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中(发邮件技巧见VIP群资料)。
备份服务器效验:
[root@web01 backup]# find /backup/ -name *.txt -mmin -15 | xargs md5sum -c > /tmp/finger.txt
[root@web01 backup]# mail -s "备份服务器效验结果:" 1354586675@qq.com < /tmp/finger.txt mail -s "备份服务器效验结果:" 1354586675@qq.com < /tmp/finger.txt
#mail postfix.service 配置
[root@backup backup]# yum install mailx -y [root@backup backup]# systemctl start postfix.service [root@backup backup]# vim /etc/mail.rc 内容尾部添加: set from=1354586675@qq.com set smtp=smtp.qq.com set smtp-auth-user=*@qq.com #邮箱地址 set smtp-auth-password=******* #qq邮箱授权码,需要验证 set smtp-auth=login
root@web01 backup]# echo "test" | mail -s "test_hello" qq@qq.com #格式
客户端代码:
#!/bin/bash
#客户端代码
#创建备份目录
IP_dir=$(hostname -i)
mkdir -p /backup/$IP_dir
#创建需要的文件目录
mkdir -p /server/scripts
mkdir -p /app/logs
tar -zchf /backup/$IP_dir/backup.`date +%F_星期%w --date="-1 day"`.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts/ /etc/sysconfig/iptables-config &> /dev/null
md5sum /backup/$IP_dir/backup.`date +%F_星期%w --date="-1 day"`.tar.gz >/backup/172.16.1.7/check_backup_ginfer.txt &> /dev/null
mkdir -p /var/html/www
tar -zchf /backup/$IP_dir/html.`date +%F_星期%w --date="-1 day"`.tar.gz /var/html/www/ &> /dev/null
md5sum /backup/$IP_dir/html.`date +%F_星期%w --date="-1 day"`.tar.gz >/backup/$IP_dir/check_html_finger.txt &> /dev/null
find /backup/ -type f -mtime +7 -delete
#传输给backup服务
rsync -az /backup/$IP_dir/ rsync_backup@10.0.0.41::backup/$(hostname -i) --password-file=/etc/rsync.password
备份服务器代码:
#!/bin/bash #效验包是否正确 find /backup/ -name *.txt -mtime +1 | xargs md5sum -c > /tmp/finger.txt
mail -s "备份服务器效验结果:" 1354586675@qq.com < /tmp/finger.txt
find /backup/ -not -name *_星期1.tar.gz -mtime +180 | xargs rm -rf
#!/bin/bash
#效验包是否正确
find /backup/ -name *.txt | xargs md5sum -c > /tmp/finger.txt #效验结果输出到/etc/finger.txt中
mail -s "备份服务器效验结果:" ********@qq.com < /tmp/finger.txt #将结果发送到邮箱中
find /backup/ -not -name *_星期1.tar.gz -mtime +180 | xargs rm -rf #查找备份服务器中180以外的文件然后删除
2、本项目的整个备份逻辑结构如下图:
特别说明:
1)工作中领导很可能不会告诉你如何去做,只会提需求,例如:小崔,我们集群的数据器很重要,请你做一个方案把所有的数据备份好(定期的备份)。
2)逻辑架构图更不可能是领导给你画,而是你理解了领导的意思,然后自己想出备份的方案,最后,在实施前你做的一个图纸而已。
3)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。
4)真实工作中除了异机备份,可能还会需要异地备份,这个地方请大家思考如何异地备份。