考虑这样一个场景,您有一个跨 3 个节点运行的 AG,并且您的备份是在本地备份的。每个节点都部署了所有默认作业并计划同时运行。由于数据库是 AG 的一部分,因此仅在主节点上进行备份。故障转移到另一个节点后,存储在先前 PRIMARY 中的备份不会被删除。
我认为这可能会发生,因为清理的默认设置是 AFTER_BACKUP,并且由于该节点上没有发生任何备份,因此清理没有发生。我尝试将其更改为“BEFORE_BACKUP”但无济于事。
我遗漏了什么明显的东西或者我能做些什么吗?
在每个节点上运行的命令
sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d DBAAdmin -Q "EXECUTE [dbo].[DatabaseBackup] @Databases = 'USER_DATABASES', @Directory = N'L:\Backups', @BackupType = 'FULL',@Compress='Y', @Verify = 'Y', @CleanupTime = 72, @CheckSum = 'Y', @LogToTable = 'Y'" -b
谢谢
当前的设计是存储过程将决定是否应该备份数据库。只有当数据库应该备份时,它才会进入执行工作的代码(创建子目录、备份、验证和清理)。
如果您使用@CleanupMode = 'BEFORE_BACKUP' 运行,那么它应该删除备份,即使不应备份数据库,这可能是有道理的。
你能在 GitHub 上为此创建一个问题吗?
https://github.com/olahallengren/sql-server-maintenance-solution/issues