海域动态监视监测管理系统_监视和管理备份系统

海域动态监视监测管理系统

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

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

以下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 ,这只是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/333243.shtml

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

相关文章

Thread 线程同步、线程状态

线程概念 线程&#xff08;英语&#xff1a;thread&#xff09;是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 一、多线程介绍 1.1创建线程类 Java中通过继承Thread类来创建并启动多线程的步骤如下&#xff1a; 1.定义Thr…

jsp过滤器示例_Java 8过滤器,地图,收集和流示例

jsp过滤器示例大家好&#xff0c;许多读者给我发了电子邮件&#xff0c;写了一篇有关Java 8的地图和过滤器功能的文章&#xff0c;因为他们发现它们难以理解和使用。 即使我以前同时写过有关map&#xff08;&#xff09;和filter&#xff08;&#xff09;的博客&#xff0c;我仍…

IntelliJ IDEA for Mac如何使用单元测试Junit

文章目录测试分类Junit 使用步骤测试结果的判定常用的注解BeforeAfter测试分类 黑盒测试&#xff1a;不需要写代码&#xff0c;不需要关注程序执行具体逻辑和流程&#xff0c;给输入值&#xff0c;看程序是否能够输出期望的值 白盒测试&#xff1a;需要写代码&#xff0c;需要…

File类、递归、字节流

一、File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示&#xff0c;主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) &#xff1a;通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 public File(String …

java求期望_Java 11的期望

java求期望过去的几年对Java世界一直是动荡不安的&#xff0c;在相当多的发行版中添加了各种各样的功能。 在开发人员社区中&#xff0c;人们逐渐意识到Java的开发速度不够快。 在最初的20年中&#xff0c;Java平台和Java开发工具包&#xff08;JDK&#xff09;经历了庞大&…

IntelliJ IDEA for Mac 封装字段(添加setter/getter方法)

可以利用 IDEA 对类中的字段进行封装&#xff0c;所谓“字段封装”&#xff0c;就是指通过调用方法的方式来访问字段&#xff0c;而不是直接通过“对象.字段名”的方式去访问。 例如&#xff0c;成员变量 hairColor 是一个 public 的变量&#xff0c;没有相关的 setter/getter…

JDBC预处理对象prepareStatement

JDBC预处理对象prepareStatement概述 一、SQL注入问题 SQL注入&#xff1a;用户输入的内容作为了SQL语句语法的一部分&#xff0c;改变了原有SQL真正的意义。 假设有登录案例SQL语句如下: SELECT * FROM 用户表 WHERE NAME 用户输入的用户名 AND PASSWORD 用户输的密码; 此…

bean包、entity包、mode包、domain包的区别

文章目录beanentitymodeldomain总结bean 包含的都是 JavaBean。 JavaBean 是一种 Java 语言写成的可重用组件。为写成 JavaBean&#xff0c;类必须是具体和公共的&#xff0c;并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成属性。Jav…

java修改数据历史记录_记录更新(Java数据类)

java修改数据历史记录最近几个月&#xff0c;有一些与“ Java数据类”&#xff08;又称为“记录”&#xff09;有关的更新。 正如我在“ JavaFX&#xff0c;Valhalla&#xff0c;数据类和Java的浮点更新 ”一文中简短提到的那样&#xff0c; Brian Goetz的“ Java数据类 ”“探…

idea配置Maven的本地仓库(打开新的项目时自动更新本地仓库的位置)

配置Maven的本地仓库 一、打开目录然后选择 Other Settings → Settings for New Projects 二、配置自己的文件路径和本地仓库 三、设置每次自动更新本地仓库

java导出数据透视表_使用数据库中的Java流制作数据透视表

java导出数据透视表来自数据库行和表的原始数据不能为人类读者提供太多了解。 相反&#xff0c;如果我们对数据执行某种聚合&#xff0c;则人类更有可能看到数据模式 在向我们展示之前。 数据透视表是聚合的一种特定形式&#xff0c;我们可以在其中应用排序&#xff0c;求平均…

Java程序和MySQL数据库中关于小数的保存问题

文章目录MySQL 中的小数类型decimaldoublefloatJava 中的小数类型floatdoubleBigDecimal金额的计算MySQL 中的小数类型 decimal MySQL 使用 decimal 保存高精度的小数&#xff0c;可以设置保留的小数个数。decimal(m,d)&#xff0c;表示该值一共显示 m 位整数&#xff0c;其中…

javafx 遮罩_JavaFX技巧31:遮罩/剪切/ Alpha通道

javafx 遮罩选择条 最近&#xff0c;我不得不实现一个自定义控件&#xff0c;该控件使用户可以从项目列表中选择一个项目。 此“ SelectionStrip”控件必须水平放置项目&#xff0c;并且在项目过多的情况下&#xff0c;允许用户左右水平滚动。 该控件将在空间受限的区域中使用&…

IntelliJ IDEA for Mac如何查看某个方法的实现

如果没有子类&#xff0c;按住 Command&#xff0c;鼠标点击方法名会跳到声明定义方法的地方&#xff1b;如果是接口或者父类&#xff0c;那么只会跳至接口或者父类声明方法的地方&#xff0c;想要看子类的实现&#xff0c;可以点击鼠标右键&#xff0c;选择 【Go To】 -> 【…

日志管理工具_您需要了解的6种日志管理工具(以及如何使用它们)

日志管理工具如果没有正确的工具来汇总和解析您的日志数据&#xff0c;则几乎不可能找到并了解所需的信息。 日志有无穷的用途&#xff0c;因为日志本身是无止境的。 应用程序日志&#xff0c;安全日志&#xff0c;BI日志&#xff0c; 林肯日志 &#xff08;好吧&#xff0c;也…

Spring半注解半Xml

一、 Component 1.Component 标记了注解&#xff0c; 默认的名称是&#xff1a;简单类名&#xff0c;首字母小写UserDaoImpl -> userDaoImplUserServiceImpl -> userServiceImplComponent可以使用value属性指定对象的名称&#xff0c;相当bean标签的id属性 Component注解…

JDK 命令之 javadoc -- 生成API文档

文章目录命令简介命令选项中文乱码javadoc 命令实例进入源代码文件所在目录&#xff0c;解析指定的源代码文件&#xff0c;生成 API 文档解析指定包下的所有源码文件&#xff0c;生成 API 文档指定源文件根目录&#xff0c;再指定具体的包路径&#xff0c;解析其中的源码文件&a…

apache.camel_带有Spring Boot 2支持的Apache Camel 2.22发布

apache.camel今天&#xff0c;我们发布了最新的Apache Camel 2.22.0版本 &#xff0c;这是第一个正式完全支持Spring Boot 2的版本。这是一项重大的工作&#xff0c;因为针对像Apache Camel这样的大型框架将Spring Boot v1升级到v2付出了很多努力–感谢骆驼队和他们的贡献。 对…

纯注解的开发

使用纯注解开发 目录结构 JdbcConfiguration package com.itheima.Config;import com.mchange.v2.c3p0.ComboPooledDataSource; import org.apache.commons.dbutils.QueryRunner; import org.springframework.beans.factory.annotation.Value; import org.springframework.co…

IntelliJ IDEA forMac 如何生成项目的javadoc(API文档)

1.在菜单栏&#xff0c;点击 Tools -> Generate JavaDoc… 2.根据你自己的需要&#xff0c;设置解析源文件的范围、设置文档输出目录、设置资源的访问权限范围、字符编码、堆内存大小等。