不幸的是,我假设像担任这个角色的大多数人一样,DBA 这个头衔是默认的,而不是设计的。
我正在尝试管理我们的 5 台 SQL Server 2016 服务器群,每台服务器都为我们的灾难恢复提供热备份。
我们询问了我们的用户群,并决定只要我们能最大限度地减少数据丢失,一些市区是可以接受的。我们不需要时间点恢复,只是根据用户数据丢失的可接受性来确保我们拥有尽可能最新的数据。
我们为我们的模型决定的是,每个主数据库上的每个数据库都将在适当的备用数据库上进行备份和恢复(数据库保留在备用/只读模式下),然后创建一个日志传送作业以传送根据数据丢失的敏感性,每 30 秒到 1 小时将日志记录到备用服务器。然后,在每台备用服务器上,每 15 分钟到 1 小时运行一次恢复作业,以将所有从主服务器发送到备用数据库的事务恢复。一旦交易被运送到备用站并成功恢复,我就不再关心那些交易了。
这很好用,因为我可以查询备用数据库并按预期查看更新的数据。
我缺少信息的地方是,我的事务日志越来越大,超过了主数据库上的数据库文件。我假设日志传送会将日志标记为已备份,但我显然错了。
我对创建一个需要完整备份的工作犹豫不决,因为我不想破坏日志传送链,所以在这里我需要一些关于如何控制我的日志大小的建议。
我已经在互联网上查询了答案,但我得到的答案与结果一样多,所以我转向这里寻求建议。
提前致谢, 基思
这是一个误解/神话。全备份永远不会破坏日志备份链。只有临时的 NON COPY_ONLY 备份才会打断日志备份链。
在完全恢复中,只有完全备份会截断日志。
检查您的自动增长设置。确保它没有设置为 Percent autogrowth 并且 MB autogrowth 是合理的。
你可以检查我的脚本来检查。
此外,您应该检查:为什么事务日志不断增长或空间不足?
日志传送利用 SQL Server 上的事务日志备份。T-Log 备份会将包含已提交事务的日志部分标记为非活动状态,并可在备份完成后重新使用。如果您的备份频率高达 1 小时,那么您的事务日志文件可能会由于备份频率低和事务量大而变大。它是持续增长还是仅在特定时间(周末、夜间等)增长?不管是什么原因,增加备份频率可能会解决这个问题。
完整备份不会破坏您的日志链。即使在使用日志传送时,您仍然应该定期运行完整备份,关键是要避免临时日志备份,因为它们会破坏日志链。
有一个关于 SE 的问题,答案提供了关于 SQL Server 中恢复链的非常好的信息。通读以更好地了解 SQL Server 中的还原链。
除了主服务器离线之外,您还需要考虑 DR 计划中的其他情况。不进行完整备份意味着如果您遇到用户发起的错误数据事件(有人意外删除表、删除记录等),您恢复正确数据状态的选项将受到原始完整备份保留的限制。
如果完整备份文件损坏会怎样?
如果需要,您是否准备好恢复可能长达数月的日志文件以重新初始化日志传送?
您是否将日志备份保留足够长的时间以从原始完整备份重新初始化日志传送,或者如果您需要重新初始化,您是否会在工作时间进行新的完整备份?
鉴于您的某些数据库的 RPO 如此低(30 秒),您是否考虑过其他技术(例如可用性组)来提供更低的 RPO\RTO 而无需传送日志备份的开销?