监视和管理备份系统
上一次我們建立了一個強大的備份系統(tǒng) ,現(xiàn)在我們將研究如何監(jiān)視備份集。 我們需要驗證備份集是否已正確清理(這稱為刪除策略)以及它們是否一致(稱為一致性策略)。
備份集可以包含多個文件集。 文件集是備份文件的集合,位于備份集的同一源目錄下。
以下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的邏輯名稱。 無論目錄樹有多深,此模式都將過濾備份集路徑下匹配的所有文件。
刪除策略和一致性策略將應用于文件,按修改日期(在磁盤上)降序排列。
第二個備份集用于交換備份。 請注意,在此示例中,我們?nèi)绾问褂胓roupByPattern 。 這將通過groupByPattern所有過濾的文件名(來自filterPattern ) groupByPattern 。 在這種情況下, groupByPattern也是日期模式,由groupByPatternHasDatePattern指定。
我們將按照指定的日期模式最終得到一個按日期分組的文件集,并且刪除策略和一致性策略將按順序?qū)h除和一致性策略應用于匹配的文件(分組日期)。
第三個備份集(用于Proxmox備份)將文件存儲在“轉(zhuǎn)儲”目錄中,并混合兩種類型的備份。 QEMU和LXC備份分為兩個文件集,并按(\d+)指定的VMID(虛擬機標識符)分組。 由于groupByPattern是十進制值而不是日期,因此刪除和一致性策略將按修改日期(在磁盤上)以降序排列的方式應用于匹配的文件。
請注意,我們并不總是指定deletePolicy或consistencyPolicy ,因為我們在這兩個政策的合理的默認值。 它們都將針對每個備份集和其中的每個文件集執(zhí)行。
deletePolicy具有兩個配置設置:
- deleteEmptyDirectories :默認情況下處于禁用狀態(tài),當您有一個groupByPattern作為日期值時,此設置很有用。 當超過保留策略時,該目錄中的所有文件都將被刪除,從而為您留下一個空的“日期”目錄。 在這種情況下,您可以指定deleteEmptyDirectories 。 該目錄只有在確實為空的情況下才會被清理(以防其他日志文件徘徊)。
- deleteNumberOfBackupsLargerThan :默認值為30。對于每日備份,這類似于30天。 如果您每周備份一次,則表示保留政策為30周。 當然,無論天數(shù)如何,都可以根據(jù)需要更改此值。 它表示需要在磁盤上保留多少個文件集。
consistencyPolicy具有三個配置旋鈕:
- numberOfBackupsRequired :默認值為7。即使我們在deletePolicy保留30個文件集,我們也只需要7個文件集即可通過一致性。 如果是每日備份,則意味著我們至少需要備份7天才能使文件集保持一致。
- minimumFileSizeRequired :默認值為1。這意味著文件集中的每個文件必須至少為1個字節(jié)或更大。 這可以確保至少有東西在文件中。 您可以將其設置為更大,或?qū)⑵湓O置為0以禁用該檢查。
- numberOfDaysOfBackupsRequired :默認值為7。這將檢查文件集中的最后一個文件(按日期或修改時間降序排列)至少比7天前更新。
組合所有設置可確保:
如果任何檢查失敗,則文件集將失敗。 如果文件集失敗,則備份集也會失敗,因此,全局狀態(tài)也將失敗。
一致性策略和刪除策略的實現(xiàn)都擴展了相同的抽象類AbstractFileVisitor ,而后者又擴展了SimpleFileVisitor<Path> 。 該FileVisitor將循環(huán)備份集URI中的所有子目錄兩次,首先執(zhí)行刪除策略,然后執(zhí)行一致性策略。
然后, AbstractFileVisitor將過濾與過濾器匹配的所有子目錄中的所有文件,并將它們放置在地圖結(jié)構(gòu)中。
為了完成此過程,將循環(huán)映射結(jié)構(gòu),并根據(jù)策略規(guī)則刪除和驗證文件。
您是否對我們的實施感到好奇? 您是否希望分叉并修改我們的代碼? 在評論中大聲喊叫,我們可以談談我們解決方案的開源。
改進措施
可以隨時進行改進,這是我們頭腦中的一些事情:
- 在備份斷開連接之前,在源上添加MD5校驗和。 在我們的應用程序中檢查那些MD5校驗和,以確保我們的備份隨時間推移保持一致。
- 在我們的應用程序的內(nèi)存中解析檔案(.zip,.tar,.gz),遍歷文件條目,看看是否到達檔案的末尾; 這應該排除損壞的.zip文件。
- 解析郵箱備份并遍歷條目以查看存檔是否未損壞。
- 將數(shù)據(jù)庫備份發(fā)送到檢查數(shù)據(jù)庫是否可以還原的基礎結(jié)構(gòu)。
- 添加了遠程檢查備份的功能(例如,通過SSH登錄到遠程服務器,并檢查那里的備份是否也可用并保持一致),對于某些異地備份方案很有用。
- 添加通過API檢查備份的功能(例如,查看第三方系統(tǒng)上托管的AWS備份或Proxmox備份的狀態(tài))。
翻譯自: https://www.javacodegeeks.com/2018/05/monitoring-and-managing-your-backup-system.html
總結(jié)
- 上一篇: karaf osgi_在OSGi中为Ka
- 下一篇: apache mahout_使用Apac