监视和管理备份系统

上一次我们建立了一个强大的备份系统 ,现在我们将研究如何监视备份集。 我们需要验证备份集是否已正确清理(这称为删除策略)以及它们是否一致(称为一致性策略)。

备份集可以包含多个文件集。 文件集是备份文件的集合,位于备份集的同一源目录下。

以下YAML配置显示了备份集和文件集的示例:

backup-set-configs:
- name: Mikrotik Backupsuri: /volume1/backupftp/mikrotik_backuptype: DISKfile-set:- name: fe-prodnet01 exportfilterPattern: '.*fe-prodnet01-.*\.rsc'- name: fe-prodnet11 backupfilterPattern: '.*fe-prodnet11.*\.backup'
- name: Exchange Backupsuri: /volume1/pex/backupstype: DISKfile-set:- name: Exchange pstsfilterPattern: '.*\.pst'groupByPattern: '.*\/backups\/(\d{4}-\d{2}-\d{2})\/'groupByPatternHasDatePattern: 'yyyy-MM-dd'deletePolicy:deleteEmptyDirectories: true
- name: Proxmox Backupsuri: /volume1/proxmox/dumptype: DISKfile-set:- name: QEMU backupsfilterPattern: '.*vzdump-qemu.*\.vma\.lzo'groupByPattern: 'proxmox/dump/vzdump-qemu-(\d+)-'consistencyPolicy:numberOfBackupsRequired: 3- name: LXC backupsfilterPattern: '.*vzdump-lxc.*\.tar\.lzo'groupByPattern: 'proxmox/dump/vzdump-lxc-(\d+)-'consistencyPolicy:numberOfBackupsRequired: 3

第一个备份集位于/volume1/backupftp/mikrotik_backup目录下,并包含两组文件。 当同一目录中有多个服务器的文件时,通常将以这种方式进行配置。 如第三个示例所示,还有另一种解决方案按服务器名称(或任何标识符)分组。

文件集具有name ,该name只是GUI和filterPattern的逻辑名称。 无论目录树有多深,此模式都将过滤备份集路径下匹配的所有文件。

删除策略和一致性策略将应用于文件,按修改日期(在磁盘上)降序排列。

第二个备份集用于交换备份。 请注意,在此示例中,我们如何使用groupByPattern 。 这将通过groupByPattern所有过滤的文件名(来自filterPatterngroupByPattern 。 在这种情况下, groupByPattern也是日期模式,由groupByPatternHasDatePattern指定。

我们将按照指定的日期模式最终得到一个按日期分组的文件集,并且删除策略和一致性策略将按顺序将删除和一致性策略应用于匹配的文件(分组日期)。

第三个备份集(用于Proxmox备份)将文件存储在“转储”目录中,并混合两种类型的备份。 QEMU和LXC备份分为两个文件集,并按(\d+)指定的VMID(虚拟机标识符)分组。 由于groupByPattern是十进制值而不是日期,因此删除和一致性策略将按修改日期(在磁盘上)以降序排列的方式应用于匹配的文件。

请注意,我们并不总是指定deletePolicyconsistencyPolicy ,因为我们在这两个政策的合理的默认值。 它们都将针对每个备份集和其中的每个文件集执行。

deletePolicy具有两个配置设置:

  • deleteEmptyDirectories :默认情况下处于禁用状态,当您有一个groupByPattern作为日期值时,此设置很有用。 当超过保留策略时,该目录中的所有文件都将被删除,从而为您留下一个空的“日期”目录。 在这种情况下,您可以指定deleteEmptyDirectories 。 该目录只有在确实为空的情况下才会被清理(以防其他日志文件徘徊)。
  • deleteNumberOfBackupsLargerThan :默认值为30。对于每日备份,这类似于30天。 如果您每周备份一次,则表示保留政策为30周。 当然,无论天数如何,都可以根据需要更改此值。 它表示需要在磁盘上保留多少个文件集。

consistencyPolicy具有三个配置旋钮:

  • numberOfBackupsRequired :默认值为7。即使我们在deletePolicy保留30个文件集,我们也只需要7个文件集即可通过一致性。 如果是每日备份,则意味着我们至少需要备份7天才能使文件集保持一致。
  • minimumFileSizeRequired :默认值为1。这意味着文件集中的每个文件必须至少为1个字节或更大。 这可以确保至少有东西在文件中。 您可以将其设置为更大,或将其设置为0以禁用该检查。
  • numberOfDaysOfBackupsRequired :默认值为7。这将检查文件集中的最后一个文件(按日期或修改时间降序排列)至少比7天前更新。

组合所有设置可确保:

  1. 文件集包含足够新的文件。
  2. 文件集的文件中至少写入了一些内容。
  3. 我们有一组跨一定时间的文件,并且该时间不超过或不影响删除策略。

如果任何检查失败,则文件集将失败。 如果文件集失败,则备份集也会失败,因此,全局状态也将失败。

一致性策略和删除策略的实现都扩展了相同的抽象类AbstractFileVisitor ,而后者又扩展了SimpleFileVisitor<Path> 。 该FileVisitor将循环备份集URI中的所有子目录两次,首先执行删除策略,然后执行一致性策略。

然后, AbstractFileVisitor将过滤与过滤器匹配的所有子目录中的所有文件,并将它们放置在地图结构中。

为了完成此过程,将循环映射结构,并根据策略规则删除和验证文件。

您是否对我们的实施感到好奇? 您是否希望分叉并修改我们的代码? 在评论中大声喊叫,我们可以谈谈我们解决方案的开源。

改进措施

可以随时进行改进,这是我们头脑中的一些事情:

  • 在备份断开连接之前,在源上添加MD5校验和。 在我们的应用程序中检查那些MD5校验和,以确保我们的备份随时间推移保持一致。
  • 在我们的应用程序的内存中解析档案(.zip,.tar,.gz),遍历文件条目,看看是否到达档案的末尾; 这应该排除损坏的.zip文件。
  • 解析邮箱备份并遍历条目以查看存档是否未损坏。
  • 将数据库备份发送到检查数据库是否可以还原的基础结构。
  • 添加了远程检查备份的功能(例如,通过SSH登录到远程服务器,并检查那里的备份是否也可用并保持一致),对于某些异地备份方案很有用。
  • 添加通过API检查备份的功能(例如,查看第三方系统上托管的AWS备份或Proxmox备份的状态)。

翻译自: https://www.javacodegeeks.com/2018/05/monitoring-and-managing-your-backup-system.html

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

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

相关文章

linux rsa登录改密码登录_linux服务器secureCRT RSA登录配置

为了保证生产服务器的安全&#xff0c;我们会做一些安全的登录验证措施&#xff01;不允许使用root账号直接登录服务器&#xff01;下面是通过secureCRT 设置RSA登录配置。1、RSA公钥配置方法(1)打开secureCRT选择一个连接然后点属性再如图所示(2)一直点下去 点击下一步要选RS…

python词云安装什么库_python词云安装什么库

python词云需要安装wordcloud库。 安装方法&#xff1a; 在cmd使用pip install wordcloud命令即可安装。 wordcloud库把词云当作一个WordCloud对象&#xff1a;wordcloud.WordCloud()代表一个文本对应的词云。 可以根据文本中词语出现的频率等参数绘制词云。 示例&#xff1a;f…

微软ODBC服务器驱动,解决安装SQL Server时[Microsoft][ODBC 驱动程序管理器] 未发现数据源的问题...

在Windows Server 2003 上安装 MS SQL Server 2000 时&#xff0c;最后阶段安装程序在配置服务器时&#xff0c;出现“[Microsoft][ODBC 驱动程序管理器] 未发现数据源”&#xff0c;具体提示为&#xff1a;#################################################################…

怎么wps解除合并单元格_wps表格怎么锁定单元格

wps表格怎么锁定单元格呢&#xff1f;很多用户对此还不是很清楚&#xff0c;小编这里就给大家带来有关wps表格怎么锁定单元格的回答&#xff0c;希望能够对大家有所帮助。一、整个表格进行锁定1、同时按住CtrlA&#xff0c;选中整个单元格&#xff0c;如图2、选中以后&#xff…

挡土墙计算软件_广联达软件如何计算钢板止水带?

原创作者&#xff1a;张向荣1、什么是钢板止水带&#xff1f;混凝土结构中&#xff0c;地下室墙体施工中&#xff0c;如果底板和墙体分开浇筑&#xff0c;就需要留置施工缝。施工缝&#xff1a;施工缝并不是一种真实存在的“缝”&#xff0c;它只是因先浇筑混凝土超过初凝时间&…

网站图片多服务器选多大,网站上的图片一般多大合适

网站上的图片一般多大合适 内容精选换一换安装了SSL证书后&#xff0c;访问网站时&#xff0c;HTTPS比HTTP要多几次握手的时间&#xff0c;HTTPS协议握手阶段比较费时&#xff0c;同时还要进行RSA校验&#xff0c;因此使用了SSL证书后&#xff0c;相较于HTTP访问&#xff0c;访…

web网站服务器宕机应急,web服务器的宕机诊断方法

宕机诊断方法编辑步骤1&#xff1a;发生了什么事系统管理员必须肩负起分析和判断Web服务器宕机原因的责任。需要解决如下的问题&#xff1a;是否是断电&#xff0c;发电机测试以及其他类似问题影响了整体物理环境?和Web服务器的通信是否已经完全被阻断&#xff0c;还是某些IP段…

eclipsejvm内存不足_Eclipse无法调试及编译时内存不足的解决

Eclipse下Debug时&#xff0c;弹出错误提示&#xff1a;“Unable to install breakpoint due to missing line number attributes. Modify compiler options to generate line number attributes”&#xff0c;无法进行调试。遇到这个错误时找到的解答方案汇总&#xff1a;1、修…

怎么在自己的网站上显示其它网站_自己做网站要怎么选域名?

域名是一种无形的资产注册一个好的域名能让你的网站更加容易取得成功&#xff0c;那么什么样的域名才是好域名呢?自己做网站域名要怎么选呢?1.好记的域名如果一个喜欢你网站的网友&#xff0c;电脑硬盘坏了丢失了收藏夹里所有的网址&#xff0c;或者在他人机器上上网&#xf…

Java的String.format可以静态导入

JDK-8203630 [“为String :: format添加等效的实例方法”]假定“将String :: format实现为静态的参数似乎是可以静态导入 format方法&#xff0c;因此其行为与C的sprintf比较 。” 在有关该主题的StackOverflow.com线程上 &#xff0c; Brandon Yarbrough写道&#xff1a;“通过…

微信朋友圈删除后服务器还有吗,删了的朋友圈还可以找回来吗

演示工具&#xff1a;手机型号&#xff1a;iphone12系统版本&#xff1a;ios14软件版本&#xff1a;微信7.0.20删除的朋友圈动态不能找回来。删除是从网络服务器上面把此信息删除了&#xff0c;是无法找回的&#xff0c;而已删除掉以后&#xff0c;好友那边此条动态也是同步删除…

mysql drop_mysql恢复drop掉的表

手贱drop了几个表&#xff0c;以为能从昨天的备份中恢复&#xff0c;结果发现最近两个月的备份都是空文件&#xff0c;因为备份脚本在两个月前改错了&#xff01;难道就这样丢失两个月的数据&#xff1f;镇定镇定——先看看mysql的配置文件cat /etc/my.cnf发现如下字样说明有救…

修改网站首页批处理_几个神奇的批处理,万事不求人!

文字 | 配图 | 排版 |©老Y网站&#xff1a;www.youquhome.cn小白可能会问啥事批处理&#xff1f;批处理(Batch)&#xff0c;也称为批处理脚本。是对某对象进行批量的处理&#xff0c;通常被认为是一种简化的脚本语言&#xff0c;它应用于DOS和Windows系统中。批处理文件的…

全境封锁服务器维护 2018,全境封锁全域事件2018年8月活动什么时候开始_全域事件怎么玩...

本文给大家带来全境封锁全域事件2018年8月活动时间介绍&#xff0c;全境封锁全域事件三进击即将到来&#xff0c;想要刷面具的不要错过哦。全域事件三&#xff1a;进击重新回归了!开始时间&#xff1a;8 月 27 日周一结束时间&#xff1a;9 月 2 日周日参加这一次的全域事件将会…

linux下部署mysql数据库连接_Linux远程部署MySQL数据库详细步骤

Linux远程部署MySQL数据库&#xff0c;供大家参考&#xff0c;具体内容如下1.0 安装 yum install lrzsz -y 命令(导入外界压缩包插件(已下载无视即可))1.1 将mysql压缩包拷贝到 /usr/local 文件目录下进行解压&#xff1a;1.2 将导入的Mysql压缩包进行解压,输入&#xff1a;tar…

nginx 电子书_Nginx最详细的反向代理配置步骤,拿去不谢

点击“蓝字”关注我们#今日份技术干货#使用Nginx实现Web反向代理功能&#xff0c;实现如下功能&#xff1a;◆后端Web服务器两台&#xff0c;可以使用httpd实现◆Nginx采用轮询的方式调用后端Web服务器◆两台Web服务器的权重要求设置为不同的值◆最大失败次数为1&#xff0c;失…

wdcp安装mysql_安装wdCP,无法连接mysql,解决方法

安装wdCP&#xff0c;无法连接mysql&#xff0c;解决方法在ubuntu 12.04版本上安装wdCP&#xff0c;采用编译安装的方式&#xff0c;一路装下来最后悲催地报错了&#xff1a;ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock (2)无法连…

c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)

前接上一篇内容。如果是第一次捧场的小伙伴&#xff0c;为了您阅读的连贯性&#xff0c;烦请扫一眼《C# 基础知识系列- 14 IO篇 文件的操作(1)》。本篇是IO之文件操作的第二篇&#xff0c;介绍一下目录和路径的相关类。下一篇介绍如何通过流来操作文件。1.2 Directory和Directo…

开源软件加密授权方案_身份验证和授权作为开源解决方案服务

开源软件加密授权方案通过实施身份验证和授权&#xff08;a&#xff06;a&#xff09;机制为所有用户数据设计集中式服务。 我将分享我的经验并最终确定解决方案的结论。 该设计包括客户端&#xff08;Web应用程序&#xff09;和服务器&#xff08;A&#xff06;A中心&#xf…

python如何设计系统界面教程_python中pycharm软件界面介绍与配置

知识回顾&#xff1a; 上节内容我们学习了下载和安装pycharm&#xff0c;从本节开始&#xff0c;我们很多情况下都会使用pycharm这个集成开发工具来开发一些小程序。 本节知识视频教程 文字教程讲解开始&#xff1a; 一、界面初始化 我们在使用pycharm这个工具的时候&#xff0…