我有一个 AlwaysON AG,其中一个主副本和一个辅助副本处于同步提交模式。AG 中的数据库都禁用了自动增长(组织内的标准策略)。托管次要副本的服务器上有计划的硬件维护,这将导致服务器离线 4-8 小时。我的不理解是,当这种情况发生时,从属副本的连接状态将变为 DISCONNECTED,主副本中的数据库的发送队列会累积未发送的事务日志记录。只要辅助副本保持脱机,所有当前日志记录都保持活动状态(禁用自动增长),事务日志备份就不会截断日志,因为日志可能会被填满。有人可以确认这是否正确吗?有什么办法可以减轻这种情况,即。
这是我的理解,但是在阅读了这篇 msdn 文章https://msdn.microsoft.com/en-us/library/ff877931%28v=sql.110%29.aspx?f=255&MSPPError=-2147217396后我很困惑。有一条注释指出:“如果辅助副本超过了主副本的会话超时期限,则主副本会暂时切换到该辅助副本的异步提交模式。当辅助副本与主副本重新连接时,它们会恢复同步-提交模式。”
这是否与上述我的情况有关,如果是的话,这是否意味着交易完成的可能性被设计减轻了?在查询 sys.availabilty_replicas 或通过任何扩展事件时,是否可以看到提交模式的这种临时转变,或者它是纯粹的幕后变化?
是的,你是 100% 正确的!
缓解与副本运行它的模式无关,它是从 AG 中删除该副本。
是的,如果你什么都不改变,就会发生这种情况。不,事务日志仍然会填满。无论是同步模式还是异步模式,主节点都必须保留最落后的副本所需的所有日志块。
在您的方案中,只有两个副本,一个主副本和一个辅助副本。辅助将离线一段时间。您已经正确地说明了会发生什么,发送队列会随着副本脱机并保持这种状态而变大。无论模式如何,都会发生这种情况。
缓解措施是删除将在较长时间内关闭的副本。这允许主节点使用正确的事务日志备份正确截断日志。
备份辅助节点后,由于它已被踢出 AG,因此参与该 AG 的所有数据库都将处于还原状态。要恢复良好的稳定状态并将副本带回 AG,请获取在辅助副本脱机期间运行的日志备份并将它们应用到数据库,使它们处于恢复状态(没有恢复) . 接近后,暂停主节点上的所有事务日志备份,并将副本重新加入 AG。恢复主节点上的日志备份。