基本备份要求

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

转载于:https://www.cnblogs.com/reblue520/p/6784493.html

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

  1. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  2. 高可用集群技术之corosync应用详解(一)

    Corosync概述: Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等.它是一个新兴的软件,2008年推出,但其实它并不是一个真正意义 ...

  3. 第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

    第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍 安装 解压 安装依赖 修改配置 注册为系统服务 启动 登录一下,发现报错了 解决方法 介 ...

  4. 第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor

    第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor 环境 准备 安装python3.7.4 问题 解决方法 安装supervisor 配置supervisor服务 启 ...

  5. 企业级应用WebLogic11g集群配置与项目实施_WebLogic部署培训教程

    企业级应用WebLogic11g集群配置与实项目施_风哥版WebLogic部署培训教程3 能完成企业级的WebLogic11g集群实施和维护工作,如下: 1.了解企业级应用系统项目实施流程 2.虚拟机 ...

  6. Kafka 集群数据备份 MirrorMaker 详解

    什么是 MirrorMaker? MirrorMaker是Kafka附带的一个用于在Kafka集群之间制作镜像数据的工具.该工具主要动作就是从源集群中消费并生产到目标群集. 一个集群可以启动多个Mir ...

  7. 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard

    笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...

  8. Tomcat5集群中的SESSION复制详解

    Tomcat 5服务器为集群和SESSION复制提供了集成的支持.本系列的第一篇文章将为大家提供SESSION持久性以及TOMCAT集群中SESSION复制的 内在工作机制一个概要认识.我将会讨论SE ...

  9. 高可用集群技术之RHCS应用详解(一)

    前提: 1)本配置共有3个测试节点,分别node1.samlee.com.node2.samlee.com和node3.samlee.com,相的IP地址分别为172.16.100.6.172.16. ...

最新文章

  1. ISME:胡锋/朱永官等揭示土壤噬菌体-宿主菌协同应对有机氯农药胁迫机制
  2. Codeforces 785 D.Anton and School - 2(组合数处理)
  3. eclipse连接小米2调试程序的问题
  4. Http://selboo.com.cn
  5. Hibernate学习(三)
  6. python自建模块导入_Python模块的使用及自建模块的导入方法举例
  7. 安卓进阶系列-03上弹选择框(PopupDialog)的使用
  8. html图片轮播怎么做的,CSS3制作轮播图的一种方法
  9. 贾扬清演讲实录:一个AI开发者的奇幻漂流
  10. 使用Spring Security安全控制
  11. 计算机中人民币符号在哪儿,详细教您电脑怎么打人民币符号
  12. 基于MATLAB的车牌识别基本原理及算法讲解
  13. 关于token和refresh token
  14. 通过公众号注册小程序
  15. idea创建Springboot项目时,出现Error:java: 读取C:\Users\HP\.m2\repository\com\vaadin\external\google\android-js
  16. GridSearchCV——信用卡违约率分析示例
  17. pgsql依赖性追踪
  18. 细讲如何解决Idear中使用@Test时提示Junit不存在问题
  19. CSS 成长之路(六)顶线、中线、基线、底线与行距
  20. 速学大学计算机基本内容(一)有图

热门文章

  1. Jeecg-Boot 快速生成前后端代码
  2. Redis进阶高可用之主从复制
  3. 学会使用context取消goroutine执行的方法
  4. vc范例-操作mysql数据库_VC范例-操作MySQL数据库
  5. SpringBoot整合Redis缓存中间件
  6. netty发送对象消息
  7. java并发临界资源管理
  8. 【java并发编程艺术学习】(四)第二章 java并发机制的底层实现原理 学习记录(二) synchronized...
  9. Perfect swift-server/http
  10. jar 打包命令详解