SQL-Server 数据库健康检查

7 sql-server

我是 SQL Server 的新手,我有以下问题:

我的数据库不大,大约1GB,我在第三方工具的帮助下定期备份。我如何确保在发生故障时能够以最小的损失恢复我的数据库?

Pix*_*ted 8

100% 确定的唯一方法是还原备份。如果您要还原到同一个 SQL Server 实例,那么您将需要使用新的数据库名称进行还原,并使用 MOVE 还原语法将 .mdf 和 .ldf 文件还原到不同的目录。

或者,您可以还原到具有相同数据库名称的单独 SQL Server 实例。同样,您将需要考虑 MOVE 语法是否相关。

请参阅将 SQL Server 数据库还原到不同的文件名和位置以获取帮助。

更重要的是,您应该使用校验和创建所有备份,并在使用 RESTORE VERIFYONLY 检查验证元数据一致性之后。使用 Ola Hallengrens 优秀的备份解决方案SQL Server 维护解决方案可以自动进行还原验证

  • “如果您还没有尝试恢复备份,那么您就没有备份”- Anon (6认同)

Fre*_*ope 5

简短回答:测试您的备份,并验证备份频率。

很难写出足够长的答案来正确解决这个话题;我将对我的简短回答进行一些解释,并为您提供一些指向更多信息的链接。

测试备份极其重要;仅仅进行备份并不能确保它们有用。大多数 DBA 会定期将备份恢复到另一个数据库或另一个服务器 - 用于练习和测试备份的有效性。

备份频率对于解决“最小损失”很重要——它取决于数据库的使用频率,更重要的是,可以接受多少数据丢失。如果用户/分析师可能会丢失一整天的数据并且可以重新输入,那么您只需要每日备份。如果他们只能丢失 5 分钟,则您需要每 5 分钟进行一次日志备份以满足该要求。与数据库利益相关者的沟通是确定正确备份策略的关键。他们可以告诉您的另一件事是他们需要在多长时间前恢复。如果偶尔有错误需要“回滚”至 3 个月前,您的备份计划需要将备份保留 90 天,以便您能够从中提取。

查看Brent Ozar 的站点,以更完整地讨论备份实践以及为什么以及何时使用它们。


KAS*_*DBA 5

我如何确保在发生故障时能够以最小的损失恢复我的数据库?

嗯,这完全取决于业务标准下定义的恢复点目标 ( RPO) 和恢复时间目标 ( RTO)。因此您需要手头有这些详细信息。

RPO这里将是愿意松散的数据丢失业务,主要是非常少。但是让我们说 15 分钟(在我们的例子中),所以我们有完整备份,然后每 10-15 分钟进行一次差异和日志备份(取决于数据库的重要性)。因此,您应该有一个正确的备份策略非常重要以防万一发生灾难并且您需要恢复。

接下来,从上面得出的结论将我们带到RTO,这是您启动系统或将系统恢复到健康状态所需的时间,通过执行从 FULL、差异到日志备份的操作链,具体取决于场景。因此重要的是,您应该进行适当的测试以收集时间,不是定期而是主动回答业务RTO。同样,这不是技术性的,而是作为备份策略知道的好消息。

然后是自动化大多数备份和恢复,这在您使用第三方工具的情况下应该很容易。此外,您需要测试和验证您的备份是否正常工作以及您可以成功备份restore

这里测试的一些技巧。

只是补充一下,如果备份要传送到磁带,最好将它们拉起来并检查是否正常,restore以验证发送到磁带的备份。只是为了确保更安全。


Jam*_*son 4

您应该将RESTORE备份复制到另一个 SQL Server 实例,以检查备份是否正常以及是否可以恢复。每天这样做很快就会变得很痛苦,因此使用 SQL 代理作业或某些 PowerShell 自动化该过程将是理想的选择。

数据库的这个恢复版本还为您提供了一个运行一致性检查的好地方,而无需向生产系统添加额外的负载。