我想开发一个自动化流程来检查我们域中的每台机器是否都已备份。我想知道其他人是怎么做的。
我们的数据中心有一个 SAN(虚拟化 Windows 和 Linux 服务器以及三个 SQL Server)和几个 NAS,现场有几十个物理 DC(Win Server 2016),还有几百个工作站(很快将全部为 Win 10)。我们将 Veam 快照在本地保存一个月,然后将其推送到 AWS。
最近,我们需要恢复一个 Excel 文件,该文件用于更新我们的一个 SQL Server 上的一个表。我们失败了。文件所在的 NAS 上的共享未被备份。当我们创建备份过程时,该共享几乎没有使用,我确信我们故意选择不备份它。但随着我们逐渐开始将该共享用于更重要的内容,我们并没有改变该过程。
接下来,我们尝试从 SQL 服务器恢复数据。该服务器是去年添加的,在备份过程中,我们错过了将其推送到 AWS 的部分,因此我们只能将其回溯一个月。
我们应该从一开始就备份该共享 - 不管它是否重要。我们应该将新的 SQL 备份推送到 AWS。我从这一切中得出的结论是,我们的流程中存在太多容易出现人为错误的地方。
我们有一个想法,就是从 Active Directory 获取每台计算机,并从每个驱动器/共享中选择一个“随机”文件(不包括系统文件和可执行文件),看看我们是否可以在备份中找到它。我们可以使用 PowerShell 自动执行选择过程。我不确定是否可以自动检查我们的备份,但希望有办法。如果我们必须手动检查几百个文件,那总比什么都不做要好。
是否有确保备份完整性的最佳实践?有没有比人类谨慎的方法更好的方法?
答案1
像您一样识别流程和程序故障非常重要。建设性的批评有助于改进。
文件所在的 NAS 上的共享未被备份。当我们创建备份流程时,该共享几乎没有使用,我确信我们故意选择不备份它。但随着我们逐渐开始将该共享用于更重要的内容,我们并没有改变该流程。
选择每个存储卷的备份策略,即使是“无备份”。向用户传达什么是永久的,什么是临时的。如果知道每个存储的耐用性,则不需要备份所有内容。
随着流程的变化,还要有一个审查备份的流程。每当你听到重要的项目时,都要问自己“你把它保存在哪里了?”和“如果文件不见了,会造成什么问题?”
备份毫无用处。你真正关心的是恢复。
使恢复成为测试和业务连续性规划的强制性部分。
- 从存档媒体(可能是云或磁带存档)恢复。最坏的情况,但如果本地存储已损坏,则需要运行。
- 使用完全来自备份的数据创建测试和灾难恢复环境。
- 验证数据所有者是否访问这些环境并确认它们按预期工作。更好的是,进行 DR 切换,让最终用户使用从备份恢复的系统。
- 此类项目需要领导层的参与和投入时间和金钱。
- 正在进行的项目,因为您将希望每年至少进行几次这样的恢复。
验证部分将有点手动,因为你想验证恢复后会产生人们想要使用的东西。但如果用户实际使用恢复的系统,他们肯定会发现他们重要的电子表格不见了。
您可以随意添加自动完整性检查,例如文件校验和验证和 DBMS 验证程序。但验证数据是否可用却很困难。您可能有一个完全有效的文件,但它已经有一个月的历史了,组织无法使用它。或者,某个卷故意没有备份,但用户还是把重要的东西放在上面。