辅助异步副本上的 DBCC CheckDb

SQL*_*ert 3 sql-server sql-server-2012 availability-groups dbcc-checkdb ola-hallengren

我可以在工作时间可读的辅助异步副本 (DR) 上运行Ola Hallengren 的 CheckDB 作业吗?目前异步副本不可读......

  • 第一个问题是是否有可能。
  • 其次,安全吗?

我有一个 Live 主服务器,我在工作时间/下班时间在辅助服务器上执行 CheckDB 。

Sea*_*ser 8

我可以在工作时间可读的辅助异步副本 (DR) 上运行 Ola Hallengren CheckDb 作业吗?

当然,假设例程不尝试更新该数据库中的任何命令或历史记录表(因为它是只读的)。

...其次,如果是安全的,因为我有一个主服务器是 Live 并且我在工作时间/下班时间在辅助服务器上做一个 checkdb。

就像sp_BlitzErik所说的那样,我们无法告诉您它是否“安全”。这将取决于许多因素,例如磁盘空间、重做队列大小、主服务器上的发送队列大小、内存、当前负载等。最好的办法是尝试一下,看看是否没有其他指标by - 如果人们抱怨,你有你的答案。如果网站宕机,你就有了答案。如果没有人说一句话并且一切顺利——你就有了答案。


Ale*_*x S 6

这种方法并不安全,因为它几乎毫无意义。这是 DBCC CHECKDB 和 SQL Server 存储子系统的作者/架构师 P. Randal 的引述。

在不断更新的数据库副本上运行 DBCC CHECKDB(例如,通过数据库镜像、SAN 镜像、日志传送或可用性组辅助)的任何答案都是不正确的。由于涉及两个不同的 I/O 子系统,因此此方法不会告诉您有关生产系统上主数据库状态的任何信息。我之前已经多次讨论过这个问题,所以我不会强调这一点,但是您要么必须在生产数据库上运行一致性检查,要么在它的恢复备份上运行,或者您没有测试生产数据库。没有什么是足够好的。

当您检查镜像数据库或辅助副本时,您不会检查原始数据库的真实状态,因为副本驻留在不同的存储子系统上,并且是应用通过网络传输的日志记录的结​​果。有关更多说明,您可以点击此链接运行一致性检查的重要性。他还在他的视频课程和 K. Delaney 的书中解释了这一点。