在 SQL Server Always ON 配置中 - 将事务日志备份到 Nul 会中断 Always On 配置吗?
Posted
技术标签:
【中文标题】在 SQL Server Always ON 配置中 - 将事务日志备份到 Nul 会中断 Always On 配置吗?【英文标题】:In SQL Server Always ON configuration - will Transaction Log backup to Nul breaks Always On configuration? 【发布时间】:2015-08-31 23:08:58 【问题描述】:假设我们有两个节点参与 SQL 2012 AO。这是一个测试实例。在一次索引重建操作期间,日志变得非常大(250 GB)。由于空间限制,我们无法备份它。如果我们将 Tlog 备份到 Nul(只是为了缩小它)会怎样——这会破坏 Always On 吗?
【问题讨论】:
【参考方案1】:AlwaysOn 是一个(营销)总称,涵盖可用性组 (AG) 和故障转移集群实例 (FCI)。从上下文来看,我假设您是在询问 AG?
对于 FCI 和 AG,简短的回答是相同的:执行事务日志备份(无论目标如何)不会“破坏”您的 HA 功能。但是,我会敦促您永远不要备份到 NUL:,除非您不关心数据库中的数据。将日志备份到 NUL:(无论您使用的是 AG、FCI 还是两者都不使用)会破坏您的日志备份链,并阻止时间点恢复。
如果您使用的是可用性组,SQL Server 不会使用事务日志备份 在节点之间进行同步。它使用事务日志本身,因此如果有日志数据需要同步到另一个节点,则不会清除事务日志。也就是说:如果您的 AG 同步落后,您的事务日志将继续填充/增长,直到同步赶上,无论执行多少事务日志备份。
您的事务日志可能会继续增长有多种原因,而 AG 同步只是其中之一。如果 SQL Server 由于 AG 中的事务不同步而无法重用事务日志,sys.databases
中的log_reuse_wait_desc
列将显示值“AVAILABILITY_REPLICA”。
回到你的根本问题:重建索引让你的事务日志变得非常非常大。
当您执行ALTER INDEX...REBUILD
时,SQL Server 会创建整个新索引(数据大小操作),并且如果索引创建出错或在完成之前被终止,则必须能够回滚。因此,您可能会看到sys.databases
中的log_reuse_wait_desc
列在非常大、长时间运行的索引重建期间显示为“ACTIVE_TRANSACTION”。重建本身会阻止您重用日志,并会导致日志增长。
【讨论】:
以上是关于在 SQL Server Always ON 配置中 - 将事务日志备份到 Nul 会中断 Always On 配置吗?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 高可用(always on)配置指南之节点配置
Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server
SQL Server 高可用(always on)配置指南之域(AD)环境搭建