镜像数据库上的事务日志维护


10

SQL Server版本:2008 R2 Enterprise SP2

我试图解决我们的SQL Server维护问题,遇到了一些我认为不正确的问题。我们有一个生产实例,其中有3个数据库都异地镜像到DR实例。

在查看DR实例时,我注意到LDF文件非常庞大,对于频繁使用的数据库,该文件超过35GB。

我知道这可能是由于镜像数据库处于完全恢复模式,并且从未备份过日志,它们只会继续增长直到驱动器空间用尽。

我们正在主体数据库上进行日志备份,而我的问题是在镜像上进行日志备份的陷阱是什么?

在进行日志备份之前,至少必须完成一次从镜像的完整数据库备份,在这种情况下,由于镜像是镜像,是否需要使用特殊选项?

同样,这是MIRROR数据库上的事务日志维护建议。

感谢您的输入

Answers:


5

我们正在主体数据库上进行日志备份,而我的问题是在镜像上进行日志备份的陷阱是什么?

您无法在镜像数据库上进行日志备份。

在进行日志备份之前,至少必须完成一次从镜像的完整数据库备份,在这种情况下,由于镜像是镜像,是否需要使用特殊选项?

您也不能在镜像数据库上进行完整的数据库备份。

以这个为例:我有Server1一个存放主体数据库的地方AdventureWorks2012,而我有Server2一个包含镜像的地方。当我尝试在镜像数据库(在Server2)上运行备份时,会发生以下情况:

use master;
go

backup database AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.bak';
go

消息954,级别14,状态1,第2行
无法打开数据库“ AdventureWorks2012”。它充当镜像数据库
消息3013,级别16,状态1,行2
备份数据库异常终止。

backup log AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.trn';
go

消息954,级别14,状态1,第1行
无法打开数据库“ AdventureWorks2012”。它充当镜像数据库
消息3013,级别16,状态1,行1
备份日志异常终止。

看看Robert Davis撰写的数据库镜像常见问题解答。我将就此操作和镜像数据库事务日志维护引用他的意见:

当您在主体上备份日志时,虚拟日志文件(日志文件中的单个单元)被标记为可重写。相同的VLF在镜像日志文件中也标记为可重写。VLF状态已镜像到数据库

所以你有它。如果您在主体上具有事务日志备份,则类似的日志重用行为将镜像到其伙伴数据库。


当有一篇文章可以回答我的确切问题而我没有找到它时,我讨厌它。这是很合理的,因为当我接管日志时,没有备份日志并且主体上的日志变得非常大,因此在我开始定期备份后,我压缩了日志,但没有想到在镜像上这样做。谢谢!
Jeremie Grund

1
一个附录的问题是,既然我们在主体上有常规的事务日志备份,那么是否有可能缩小泛滥的镜像事务日志?
Jeremie Grund

@JeremieGrund做到这一点的一种方法是将故障转移到镜像数据库并在那里进行收缩。在非生产环境中进行彻底测试,以确保它具有您想要/期望的行为。
Thomas Stringer

0

@JeremieGrund-如果数据库物理文件体系结构相同(数据和日志文件驱动器的名称和位置),那么如果您在主体上收缩日志文件,那么收缩命令将发送到镜像,并在镜像上执行相同的操作。因此,可以通过这种方式维护您的镜像日志文件。如果文件架构不同,则应遵循Thomas Stringer建议。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.