备份服务器搭建

备份服务器搭建

  • 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/bashPath=/data/rsync/test
Server=192.168.0.2
User=rsync
module=sync_filemonitor() {/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $1 | while read line; doif [ -f $line ]; thenrsync -avz $line --delete ${User}@${Server}::${module} --password-file=/etc/rsync.passwordelsecd $1 &&rsync -avz ./ --delete ${User}@${Server}::${module} --password-file=/etc/rsync.passwordfidone
}monitor $Path;

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

6、参考

备份服务器的部署

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优化指南:带宽限制的可行策略

大家好!作为一名专业的爬虫程序员,我们经常面临的一个挑战就是带宽限制。尤其是在需要快速采集大量数据时,带宽限制成为了我们提升爬虫速度的一大阻碍。今天,我将和大家分享一些解决带宽限制的可行策略,希望能帮助大家…

postman接口自动化测试框架实战!

什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完成的用…

MongoDB【CRUD练习-条件查询-文档关系】

练习1-CRUD // 进入test数据库 use test; // 查询文档内容 db.students.find(); // 显示当前数据库中所有集合 show collections; // 向数据库的user集合中插入一个文档 db.users.insertOne({username: "lyh"} ); // 查看当前数据库中所有的集合 发现users集合被创建…

JVM——类加载与字节码技术—编译期处理+类加载阶段

3.编译期处理 编译期优化称为语法糖 3.1 默认构造器 3.2 自动拆装箱 java基本类型和包装类型之间的自动转换。 3.3泛型集合取值 在字节码中可以看见,泛型擦除就是字节码中的执行代码不区分是String还是Integer了,统一用Object. 对于取出的Object&…

ElasticSearch常用方法

ElasticSearch:是一个储存、检索、数据分析引擎。 在互联网项目中我们经常会按一定的条件去索引我们指定的数据,但是在大量的数据中我们如果直接查询数据库效率是非常低的,ElasticSearch就可以很好的帮我们完成检索。 es封装了api提供给我我们直接操作…

Ajax+Vue+ElementUI

文章目录 1.Ajax1.1 介绍1.2 Ajax快速入门1.3 案例-用户注册时,检测用户名是否数据库已经存在1.4 Axios1.4.1 Axios快速入门1.4.2 请求别名 1.5 JSON1.5.1 Json的基础语法1.5.2 FastJson的使用5.3.2 Fastjson 使用 2. Vue2.1 介绍2.2 Vue快速入门2.3 Vue常用指令和生…

Linux安装rabbitmq整合版本

rabbitmq和erlang对应版本 https://www.rabbitmq.com/which-erlang.html erlang下载地址 Otp 24.1.7 - Erlang/OTP wget https://github.com/erlang/otp/releases/download/OTP-24.1.7/otp_src_24.1.7.tar.gz socat下载地址 RPM resource socat(x86-64) (rpmfind.net) rab…

微信小程序列表加载更多

概述 基于小程序开发的列表加载更多例子。 详细 一、前言 基于小程序开发的列表加载更多例子。 二、运行效果 运行效果(演示的小视频,点击播放即可) 三、实现过程 总体思路如何: 1、通过scroll-view组件提供的bindscroll方法…

Ext JS 之Microloader(微加载器)

“Microloader”是 Sencha 数据驱动的 JavaScript 和 CSS 动态加载器的名称。 清单 app.json 用于应用的设置,Sencha Cmd 在构建的时候会读取这个文件。 Sencha Cmd 转换“app.json”的内容并将生成的清单传递给 Microloader 以在运行时使用。 最后,Ext JS 本身也会查阅运…

2023年Java毕业设计题目推荐,怎样选题?500道毕业设计题目推荐

大家好,我是程序员徐师兄,最近有很多同学咨询,说毕业设计了,不知道选怎么题目好,有哪些是想需要注意的。 今天,我整理了一些Java毕业设计的题目,可以参考一下,希望对大家有所帮助 文章目录 一、…

TCP可靠性机制

确认号/序列号/ACK TCP帮助确保数据的准确传递。为了做到这一点,其使用了一些特殊的标记和信息,其中包括序号、确认号和ACK字段。 其中,它将每个字节的数据都进行了编号. 即为序列号. 序列号:就像给书中的每一页都编了号码一样&a…

服务器Linux系统配置mysql数据库主从自动备份

服务器Linux系统配置mysql数据库主从自动备份 当数据内容越来越多的时候,数据库也变得越来越大了。如果不小心误删了,或者被黑主机了,那就什么都没有了。所以数据库的数据怎么能让它不丢失做到万无一失变得尤为重要! 我是艾西&a…

全流程R语言Meta分析核心技术应用

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

单片机(二)使用位移 让灯亮

一:硬件电路 P2 口: P2.0~ P2.7 是这些 I0 口 LED 阳极接 电源 , P20 口 为低电平 可以让 LED灯 亮 二:软件实现部分 两种 ① 通过循环 来展示从左 到右 #include "reg52.h"#define LED_PORT P2 // 定义单片机的P2端…

把握医学营养趋势 健启星加速突围

随着“健康中国”战略的提出,大健康产业上升到国家战略高度,进入高速发展期。市场数据显示,医学营养市场发展势头迅猛,年平均增速超过30%,中国医学营养市场也迎来高速发展。但目前品牌处于高度分散的状态,市…

解决 go mod tidy 加载模块超时

如果go mod tidy 加载模块超时 解决方法 修改GOPROXY: 查看go环境相关信息: go envgo env -w GOPROXYhttps://goproxy.cn

数据结构(4)

树 无论是符号表还是线性表,随着元素的增多,增删查操作耗时增加,为了提高运算效率,需要树。 树是由N(N>1)个有限结点组成一个具有层次关系的集合。 特征: 1.每个结点有零个或多个结点 2.…

在Linux系统中配置代理服务器来加速软件包管理

作为一名专业程序员,我今天要和大家分享一个在Linux系统中配置代理服务器来加速软件包管理的解决方案。如果你经常在Linux上使用软件包管理器(如apt、yum等),但下载速度缓慢,那么本文将给你带来一些操作方法&#xff0…

ChatGPT帮助提升工作效率和质量:完成时间下降40%,质量评分上升 18%

自ChatGPT去年11月发布以来,人们就开始使用它来协助工作,热心的用户利用它帮助撰写各种内容,从宣传材料到沟通话术再到调研报告。 两名MIT经济学研究生近日在《科学》杂志上发表的一项新研究表明,ChatGPT可能有助于减少员工之…

专题-【十字链表】

有向图的十字链表表示法: