第三十八天-一道例题企业级备份方案

一、例题

  某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据备份,这样web服务器数据丢失可以进行恢复。
  要求如下:
  每天晚上00点整在web服务器A上打包备份系统配置文件、网站程序目录及访问日志,并通过rsync命令推送到服务器B上备份保留(备份的思路可以是先在本地按日期打包,然后再推到备份服务器B上)。

  问题一:实现web服务器A数据备份到服务器B
  要求如下:
  1、web服务器A和备份服务器B的备份目录必须都为/backup
  2、系统配置文件包括但不限于:
      a、定时任务服务的配置文件/var/spool/cron/root
      b、开机自启动的配置文件/etc/rc.local
      c、日常脚本目录/server/scripts
      d、防火墙iptables配置文件/etc/sysconfig/iptables
      e、自己思考下还有什么需要备份?
  3、web服务器站点目录假定为/var/html/www
  4、web服务器A访问日志路径假定为/app/logs
  5、web服务器保留打包后的七天的备份数据即可(本地留存不多余7天),备份服务器B上保留6个月的数据备份。
  6、备份服务器B上要按照备份数据服务器的IP为目录保存,打包的文件按照时间名字保存。

二、实施步骤
在B上搭建rsync服务
1、编辑rsync服务配置文件

[[email protected] /]#vim /etc/rsyncd.conf

2、查看rsync服务配置文件是否配置正确

[[email protected] /]#cat /etc/rsyncd.conf
#rsync_config_______________start
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
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.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#rsync_config_______________end 

3、创建同步目录,并修改其所属用户和组

[[email protected] /]# mkdir /backup/
[[email protected] /]# chown rsync.rsync -R /backup/

4、创建rsync服务虚拟用户和密码文件

[[email protected] /]# echo "rsync_backup:123456" >/etc/rsync.password
[[email protected] /]# chmod 600 /etc/rsync.password
[[email protected] /]# cat /etc/rsync.password
rsync_backup:123456
[[email protected] /]# rsync --daemon         #启动rsync服务
[[email protected] /]# lsof -i :873           #查看rsync服务是否启动成功
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1728 root    4u  IPv4  14284      0t0  TCP *:rsync (LISTEN)
rsync   1728 root    5u  IPv6  14285      0t0  TCP *:rsync (LISTEN)

5、关闭防火墙和selinux

[[email protected] /]# /etc/init.d/iptables stop
[[email protected] /]# setenforce 0
[[email protected] /]# getenforce
Permissive

6、在备份端编写简单脚本,删除180天以前的备份,并将脚本加到定时任务中

[[email protected] scripts]# cat rmfile.sh
#!/bin/bash

find /backup/ -type f -name "*.tar.gz" -mtime +180|xargs rm -f

[[email protected] scripts]# crontab -l
#########
00 00 * * *  sh /server/scripts/rmfile.sh >/dev/null 2>&1

在A上的配置
1、创建备份目录,并修改目录所属用户和组

[[email protected] /]# mkdir backup
[[email protected] /]# chown rsync.rsync -R backup/
[[email protected] /]# ls -ld backup/
drwxr-xr-x. 2 rsync rsync 4096 12月 26 02:13 backup/

2、创建rsync密码文件

[[email protected] /]# echo "123456" >/etc/rsync.password
[[email protected] /]# chmod 600 /etc/rsync.password
[[email protected] /]# cat /etc/rsync.password
123456

3、测试同步是否成功

[[email protected] /]# cd backup/
[[email protected] backup]# ls
[[email protected] backup]# touch test.txt
[[email protected] backup]# echo 124 >test.txt
[[email protected] backup]# cat test.txt
124
[[email protected] backup]# rsync -avz /backup/ [email protected]192.168.1.115::backup --password-file=/etc/rsync.password
sending incremental file list
./
test.txt

sent 107 bytes  received 30 bytes  274.00 bytes/sec
total size is 4  speedup is 0.03

4、在A上编写打包同步脚本
4.1、打包同步脚本

[[email protected] scripts]# cat bak.sh
#!/bin/sh

ip=`ifconfig |awk -F ‘[ :]+‘ ‘NR==2{print $4}‘`

[  ! -d /backup/$ip ] && mkdir -p /backup/$ip
cd /backup/$ip &&tar czf bak_$(date +%F).tar.gz /var/spool/cron/ /etc/rc.local /server/scripts/ /etc/sysconfig/iptables

rsync -az /backup/ [email protected]192.168.1.115::backup --password-file=/etc/rsync.password

find /backup -type f -name "*.tar.gz" -mtime +7 |xargs rm -f

4.2、添加到定时任务

[[email protected] scripts]# crontab -l
####back system config file and web site  to B server####
00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1 

4.3、查看打包备份效果

[[email protected] scripts]# cd /backup/
[[email protected] backup]# ls
192.168.1.113
[[email protected] backup]# cd 192.168.1.113/
[[email protected] 192.168.1.113]# ls
bak_2015-12-26.tar.gz

[[email protected] backup]# ls
192.168.1.113
[[email protected] backup]# cd 192.168.1.113/
[[email protected] 192.168.1.113]# ls
bak_2015-12-26.tar.gz

问题二、如果有100台服务器需要备份数据,该如何指定备份方案及具体实施?
  解答:
  思路:很多同学说在web客户端备份完毕发邮件给管理员,有100台客户端,老大疯了,早晨开邮箱100封垃圾邮件,这个思路不对。
  正确思路:服务器端检查结果:
  1)du -sh /backup/ip/当天的备份文件 >/tmp/bak.log
  2)打包,推送,再推送一个flag(ip+时间的文件名),本地清理7天前的。
  3)手工或定时的杰宝,模拟数据恢复来确认数据备份的完整性。

问题三、如何在备份数据后,把备份的成功及失败结果信息发给系统管理员邮箱中?
问题四、假如是对NFS共享服务器的数据做备份,如何实现实时的数据同步?

时间: 2024-12-07 23:38:26

第三十八天-一道例题企业级备份方案的相关文章

搭建企业级全网数据定时备份方案【cron + rsync】

1.1.1. 服务端的配置[192.168.25.141] Rsync的端口是:873 man rsyncd.conf 查看帮助 1.vim /etc/rsyncd.conf vi /etc/rsyncd.conf -->man rsyncd.conf 查看帮助 ######rsyncd.conf####### uid = rsync ----->非系统虚拟用户 gid = rsync use chroot =no -->防止出现安全问题 maxconnections = 200 ---

数据备份方案

经常有朋友发生了数据丢失时找我帮忙,我发现数据备份是最科学的解决方案.于是花时间把我这几年积累的数据备份方案整理出来,希望能帮到大家. 先看看几个典型情景: 我经常用手机拍照,万一我手机丢了,里面的照片的价值比一台新手机还大. 我把我的许多资料存在移动硬盘里了,结果今天硬盘出问题,读不出来,有什么办法可以挽回? 我的许多重要数据都存在我的个人电脑里,结果昨晚电脑被贼偷了. 我刚误修改了一份Excel文件,而且还保存了,我想要回修改前的文件. 以上是常见的几个代表情景,如果真的发生了,往往很难处理

Docker实践9:备份方案

1 两个文件系统 先提一下两个重要的文件系统概念,一个是aufs,一个是vfs. aufs是一个类似于Unionfs的可堆叠联合文件系统.它将多个目录整合成单一的目录.ubuntu对其有良好的支持,因此docker的镜像就存储在aufs文件系统下. vfs是linux的内核中一个重要概念,这个虚拟文件系统可以让open().read().write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层. 2 docker镜像与容器的存储 docker的层次结构如上图. docker

MySQL备份方案-->(利用mysqldump以及binlog二进制日志)

From:http://blog.csdn.net/mchdba/article/details/11575605 随着数据不断增加,而且为了兼容以后的innodb存储引擎, 所以考虑采用mysqldump全备+日志增量备份的策略.使用mysqldump对于MySQL大部分mysql存储引擎比如myisam.innodb都有很好的支持. 方案一:mysqldump全备份+日志增量备份 1, mysqldump备份方案: 周一凌晨3点全备 周二到周日凌晨3点增量备份 2, 备份步骤 (1)    

公司备份方案

随着科技的变化,人们对网络的依赖性越来越强,网站也逐渐成为企业与内部和外界进行信息的交流和共享的重要平台.当网站成为企业的商用工具后,数据的规模也越来越大,无论是内.外部数据均呈几何级增长,相关的数据便成了企业网站最重要的资产,数据的丢失或毁坏可能会给企业带来不可估量的损失.然而,病毒入侵.硬件故障.软件崩溃等难以预测的意外问题或者是误操作等人为因素都时刻威胁着企业网站数据的安全,因而如何保证网站数据的完整性和安全性便成了每个企业都必需考虑的问题. 一.企业网站为什么要数据备份 防止数据丢失的第

mysql 数据库备份方案及策略

由于mysql存在多种数据库备份方式,而且各有利弊,对于我们初学者来说,选择合适的备份方式确实有些困难.个人觉得,首先要基于公司的需求,考虑能够容忍丢失多少数据.花多少人力时间成本等,这是我们制定备份方案的依据,同时制定出来的方案要可执行,要执行,不能把方案当作纸上谈兵.下面我把我们实际的备份方案整理出来供大家参考交流. 作为数据安全的一个重要内容——数据备份的重要性却往往被人们所忽视.只要发生数据传输.数据存储和数据交换,就有可能产生数据故障.这时,如果没有采取数据备份和数据恢复手段与措施,就

MySQL常见备份方案

MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup 本例为方便演示,数据库里面数据为空.下面开始动手 mkdir /opt/backup #创建备份目录 mkdir -p /data/3309/{data,binlog} cd /usr/local/mysql/ scripts/mysql_install_db --user=mysql --datadir=/data/3309/data/ --basedir=/usr/loc

混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案

前言阿里云对象存储(OSS)用户众多.很多用户因为业务或者合规性需求,需要对OSS内的数据做备份,无论是线上备份,还是线下备份.用户可以选择使用OSS的开放API,按照业务需求,做数据的备份,也可以选择OSS已有的服务进行数据备份,比如OSS的跨域复制.但是,前一种方式,存在易用性和备份效率问题:后一种方式,只是将数据存双份或者多份,无法有效规避原始数据出问题后,被复制的那份数据也出问题的风险.本文介绍的基于云存储网关和混合云备份的OSS数据备份方案,不仅能保证OSS数据按策略的多版本备份,而且

专职DBA-mysqldump企业级备份恢复

专职DBA-mysqldump企业级备份恢复 数据库备份最高层次思想 --------------------------------------- 数据库备份最牛的层次,就是永远都用不上备份. 这就像我们日常购买大病保险一样,任何人购买大病保险都肯定不是希望得大病,我们做数据库备份也是一样,备份策略无论做得多么完备,我们还是不希望故障发生. 因此,除了具备高超的备份策略和精湛的恢复能力之外,还要在未雨绸缪上多下功夫以达到防患于未然的目的. 对数据一致性要求很严格的业务可以使用MGR/PXC/M