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