备份服务器搭建

备份服务器搭建

  • 1、背景
  • 2、作用
  • 3、选型
  • 4、环境
  • 5、部署
    • 5.1、服务端部署
      • 5.1.1、安装
      • 5.1.2、配置
    • 5.2、客户端部署
    • 5.3、备份策略
      • 5.3.1、定时备份策略
      • 5.3.2、文件变动备份
  • 6、参考

1、背景

随着项目的推进,备份服务器被提上了工作日程,等保、密评和接入测评对备份服务器都提出了要求。
数据备份的意义就在于,当受到网络攻击、入侵、电源故障或者操作失误等事故的发生后,可以完整、快速、简捷、可靠地恢复原有系统,在一定的范围内保障系统的正常运行。
标准的可以认为比较安全的数据备份策略,应当是一份本地一份远程,根据数据重要程度,长则每天,短则每小时备份一次。因为数据库目前采用了云服务商提供的RDS服务,服务自带数据备份功能,所以本篇针对服务器上的应用服务的备份搭建。
不同机房和不同网络区域采取本地备份和远程交叉备份的方式备份数据
在这里插入图片描述

2、作用

备份服务器允许您制作数据、文件或应用程序的副本。备份涉及用于存储的硬件和软件以及检索服务。如果定期进行——数据安全专家建议每天至少备份一次——这对于最大限度地减少因数据丢失而造成的业务中断大有帮助。

备份规则:

  • 至少复印3份
  • 存储在2种不同的媒体类型上
  • 异地至少保存1份

3、选型

备份服务器选用rsync服务搭建,Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具, rsync 在 GNU 通用公共许可证下免费提供,目前由 Wayne Davison 维护。

工作方式

Rsync大致使用三种主要的传输数据的方式:

  • [本地传输模式] 单个主机本地之间的数据传输(此时类似于cp命令的功能)
  • [远程shell传输模式] 借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)
  • [守护进程模式] 以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能)

4、环境

序号项目版本
1CentOS Linux release7.6.1810 (Core)
2Rsyncversion 3.1.2

5、部署

部署采用同一个网络下,一台服务端多台客户端的方式进行部署操作。
在这里插入图片描述

5.1、服务端部署

5.1.1、安装

查看服务器是否安装rsync

# rpm -qa rsync
rsync-3.1.2-10.el7.x86_64

注意:一般的系统部署好yum仓库后,rsync服务是自动安装好的,所以可以使用rpm -qa rsync直接查看是否已经安装。如果已经安装,则不需要执行此步骤。如果输入以上命令后查询不到任何信息,则需要安装rsync服务。

 yum install -y rsync

创建用户

useradd rsync -s /sbin/nologin -M

-M 指定此用户为虚拟用户

-s 指定此用户的解释器

/sbin/nologin 指此用户无法登陆

创建目录,如果有目录可不用创建

mkdir /data/rsync

目录赋权限

chown -R rsync:rsync /data/rsync

5.1.2、配置

配置主要围绕rsync守护进程的配置文件/etc/rsyncd.conf调整

备份配置文件

[root@backuphost backup]# cp /etc/rsyncd.conf{,.bak}

调整备份文件

uid = rsync 	# 指定用户
gid = rsync		# 指定用户组
use chroot = no	# 安全相关配置
timeout = 300	# 超时时间,客户端超过300秒没有发送数据,服务器断开连接
ignore errors	# 忽略传输中的简单错误
list = false	# 客户端查看服务端的模块信息
max connections = 46	# 最大连接数
fake super = yes		# 将rsync虚拟用户伪装成一个超级管理员用户
read only = false		# 指定备份目录可读可写

pid file = /var/run/rsyncd.pid	# 进程信息标识
lock file = /var/run/rsync.lock	# 锁文件
log file = /var/log/rsyncd.log	# 日志文件

hosts allow = 172.30.1.0/24		# 允许传输设备备份的主机(白名单)
hosts deny = 0.0.0.0/32			# 禁止传输设备备份的主机(黑名单)
secrets file = /etc/rsync.password # 认证用户密码文件 格式用户名:密码 密码不超过8位

[backup]	# 模块名称
path = /data/rsync		# 指定服务端备份目录

创建备份服务器的认证密码文件

echo 'rsync:Xyyyzz@1' > /etc/rsync.pasword
chmod 600 /etc/rsync.password

启动备份服务

systemctl restart rsyncd	# 启动rsync服务
systemctl enable rsyncd		# 让rsync服务开机自启动

查看端口

$ netstat -nltp
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::873                  :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -                   
tcp6       0      0 ::1:25                  :::*                    LISTEN      - 

防火墙放行服务

firewall-cmd --permanent --add-service=rsyncd
firewall-cmd --reload

外部放行

外部放行是指云服务器的安全组规则中放行该服务或者端口,以下以某某云举例
在这里插入图片描述

5.2、客户端部署

启动服务

systemctl start rsyncd

如果启动失败,安装服务

yum install -y rsync

创建密码文件

echo 'rsync:Xyyyzz@1' > /etc/rsync.pasword
chmod 600 /etc/rsync.password

数据交互

rsync -avz /etc/hosts rsync@172.30.1.5:backup --password-file=/etc/rsync.password

参数说明

img

*“–exclude”、"–exclude-from"排除命令要注意一下,当你想备份某目录文件,但此目录下有些文件你想排除掉,可以用这两个命令。要注意的是这两个参数后面跟着的要排除的文件的路径一定从要备份的目录下面开始写,不能直接用绝对路径,否则排除不成功。

5.3、备份策略

备份策略按数据和业务不同,分别配置不同的备份策略:

  • 数据按每天备份一次
  • 业务按每个月备份一次
  • 每次业务更新备份一次

5.3.1、定时备份策略

服务端创建备份文件夹

mkdir -p /data/rsync/xxzz

客户端执行备份命令

rsync -avz /etc/hosts rsync@xxx.yy.x.yyy::backup /data/rsync/xxzz --password-file=/etc/rsync.password

服务端验证

[backup@backuphost ~]$ cd /data/rsync/xxzz
[backup@backuphost xxzz]$ ls
hosts
[backup@backuphost xxzz]$

在客户端创建定时任务,定时将文件备份至服务端

每月的1日的3点开始备份文件

crontab -e
00 03 01 * * rsync -avz /etc/hosts rsync@xxx.yy.x.yyy::backup /data/rsync/xxzz --password-file=/etc/rsync.password

以上完成了,业务文件的定时备份操作。

5.3.2、文件变动备份

接下来介绍 inotify 监控文件变动,来实现实时同步。

rsync 不能实时的去监测、同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。
可以使用 rsync+inotify 的组合来解决,可以实现数据的实时同步。

1、安装inotify

yum install -y inotify-tools

2、常用参数

-m,–monitor:始终保持事件监听状态   # 重要参数
-r,–recursive:递归查询目录     # 重要参数
-q,–quiet:只打印监控事件的信息     # 重要参数
–excludei:排除文件或目录时,不区分大小写
-t,–timeout:超时时间
–timefmt:指定时间输出格式  # 重要参数
–format:指定时间输出格式       # 重要参数
-e,–event:后面指定删、增、改等事件 # 重要参数

3、inotifywait events 事件

access:读取文件或目录内容
modify:修改文件或目录内容
attrib:文件或目录的属性改变
close_write:修改真实文件内容   # 重要参数
close_nowrite:文件或目录关闭,在只读模式打开之后关闭的
close:文件或目录关闭,不管读或是写模式
open:文件或目录被打开
moved_to:文件或目录移动到
moved_from:文件或目录从移动
move:移动文件或目录移动到监视目录  # 重要参数
create:在监视目录下创建文件或目录  # 重要参数
delete:删除监视目录下的文件或目录  # 重要参数
delete_self:文件或目录被删除,目录本身被删除
unmount:卸载文件系统

4、常用命令
创建事件

inotifywait -mrq  /data/ywcx/web --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e create

修改事件

inotifywait -mrq  /data/ywcx/web --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e close_write

删除事件

inotifywait -mrq  /data/ywcx/web --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e delete

5、脚本监控

#!/bin/bash

Path=/data/rsync/test
Server=192.168.0.2
User=rsync
module=sync_file

monitor() {
  /usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $1 | while read line; do
    if [ -f $line ]; then
      rsync -avz $line --delete ${User}@${Server}::${module} --password-file=/etc/rsync.password
    else
      cd $1 &&
        rsync -avz ./ --delete ${User}@${Server}::${module} --password-file=/etc/rsync.password
    fi
  done
}

monitor $Path;

直接将脚本在后台启动,就可以监控文件的变化了,从而实现服务器之间的文件同步。

6、参考

备份服务器的部署

备份服务器(使用rsync搭建)

linux rsync指定用户名和密码的方式同步

rsync + inotify 实现文件实时双向自动同步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/84005.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

selenium Chrome驱动下载地址

Chrome驱动官方最新版下载地址:https://googlechromelabs.github.io/chrome-for-testing/ 有稳定版,开发版等版本可以选择下载 选择 操作系统复制下载链接直接下载

CentOS7安装部署Doris

文章目录 CentOS7安装部署Doris一、前言1.简介2.环境 二、正文1.Doris基础1)架构图2)通讯端口 2.部署服务器3.安装基础环境1)安装JDK 112)安装GCC3)设置文件句柄数4)关闭交换分区(swap&#xff…

微服务参数透传实现

说明:在微服务架构中,用户身份经网关验证后,我们可以将用户信息,如ID加入到请求头上。后面的微服务中,可以设置一个拦截器,拦截请求,获取请求头上的用户ID,加入到ThreadLocal中。 最…

欧拉计划44题

Pentagon numbers Pentagonal numbers are generated by the formula, . The first ten pentagonal numbers are: 1,5,12,22,35,51,70,92,117,145,… It can be seen that . However, their difference, 70−2248, is not pentagonal. Find the pair of pentagonal numbers, a…

安防视频监控平台EasyCVR视频集中存储平台接入RTSP设备出现离线情况的问题解决方案

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Stable Diffusion入门修炼手册

简介 作为新入门的新手,通常安装完Stable Diffusion之后,一打开界面,在文生图输入girl或者dog,结果出来的画面比较糟糕,看起来像素很低,画面不清晰,人物也不怎么美,等等其他问题&am…

【100天精通python】Day38:GUI界面编程_PyQt 从入门到实战(中)_数据库操作与多线程编程

目录 专栏导读 4 数据库操作 4.1 连接数据库 4.2 执行 SQL 查询和更新: 4.3 使用模型和视图显示数据 5 多线程编程 5.1 多线程编程的概念和优势 5.2 在 PyQt 中使用多线程 5.3 处理多线程间的同步和通信问题 5.3.1 信号槽机制 5.3.2 线程安全的数据访问 Q…

二、10.文件系统

硬盘是低速设备,其读写单位是扇区,为了避免频繁访问硬盘,操作系统不会有了一扇区数据就去读写一次磁盘,往往等数据积攒到“足够大小”时才一次性访问硬盘,这足够大小的数据就是块,硬盘读写单位是扇区&#…

二、9.硬盘驱动程序

文件系统是运行在操作系统中的软件模块,是操作系统提供的一套管理磁盘文件读写的方法和数据组织、存储形式,因此,文件系统=数据结构+算法,哈哈,所以它是程序。它的管理对象是文件,管…

C语言小白急救 指针初级讲解(四千字教程)

系列文章目录 C语言小白急救 表达式求值(两千字教程) C语言小白急救 操作符详解(8千字保姆级教程) C语言小白急救 扫雷游戏(万字保姆级教程) C语言小白急救 使用C语言编写‘三子棋‘ 文章目录 系列文章目录[C语言小白急救 表达式…

Docker的基本使用

Docker 概念 Docker架构 docker分为客户端,Docker服务端,仓库 客户端 Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只需要向 Docker 服务端发起请求,服务端将完成所有的工作并返回相应结果。 Docker …

设计模式之创建者模式

文章目录 一、介绍二、应用三、案例1. 麦当劳11随心配2. 代码演示3. 演示结果 四、优缺点五、送给读者 一、介绍 建造者模式(Builder Pattern)属于创建型设计模式,很多博客文章的对它的作用解释为用于将复杂对象的创建过程与其细节表示分离。但对于初学者来说&…

机器学习深度学习——NLP实战(情感分析模型——textCNN实现)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——NLP实战(情感分析模型——RNN实现) 📚订阅专栏:机器学习…

Lnton羚通算法算力云平台【PyTorch】教程:torch.nn.Softsign

torch.nn.Softsign 原型 CLASS torch.nn.Softsign() 图 代码 import torch import torch.nn as nnm nn.Softsign() input torch.randn(4) output m(input)print("input: ", input) print("output: ", output)# input: tensor([ 0.0046, -0.4135, -2…

003-Nacos 2.1.x 注册实例源码分析

目录 Nacos 2.1.X注册实例入口接口流程Client 注册 事件处理 服务订阅入口 Nacos 2.1.X 注册实例 入口 com.alibaba.nacos.naming.remote.rpc.handler.InstanceRequestHandler#handleService service Service.newService(request.getNamespace(), request.getGroupName(), r…

7-10 查验身份证

分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10&#xff0c…

dockerfile编写LNMP

目录 1. 项目环境 2. 服务器环境 二、部署nginx(容器IP为192.168.158.26) 1、整个Dockerfile文件内容 ​编辑 2、配置nginx.conf文件 3、构建镜像 三、部署mysql 1、整个Docker文件内容 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PHP部署 1…

深入理解Semaphore

Semaphore(信号量)是操作系统中PV操作的原语在java中的实现,它也是基于AQS实现的。其中PV操作是操作系统中一种实现进程互斥与同步的有效方法。PV操作与信号量(S)的处理有关,P表示通过,V表示释放…

SpringCloud Gateway服务网关的介绍与使用

目录 1、网关介绍2、SpringCloudGateway工作原理3、三大组件3.1 、Route(路由)3.2、断言 Predicate3.3、过滤器 filter 4、Gateway整合nacos的使用4.1 、引入依赖4.2、 编写基础类和启动类4.3、 编写基础配置和路由规则4.4 、测试结果 1、网关介绍 客户…

面试之HTTP

1.HTTP与HTTPS的区别 HTTP运行在TCP之上;HTTPS是运行在SSL之上,SSL运行在TCP之上两者使用的端口不同:HTTP使用的是80端口,HTTPS使用的是443端口安全性不同:HTTP没有加密,安全性较差;HTTPS有加密…
最新文章