Ole*_*ndr 4 sql-server backup sql-server-2012 ola-hallengren
我们使用 Ola Hallengren 的DatabaseBackup存储过程将 SQL Server 2012 实例上的 SharePoint 数据库负载备份到 Azure blob 存储中。我们已经这样做了很长一段时间,没有任何问题。然而,在过去的 6 周里,我们DIFFs被随机提升FULL,我们无法找出原因。
这是代理步骤的输出
Run Code Online (Sandbox Code Playgroud)BACKUP DATABASE [Database] TO URL = N'https://strorgage.blob.core.windows.net/server/instance/Database/2020/11/diff/Database_FULL_20201105_200000.bak' WITH NO_CHECKSUM, COMPRESSION, CREDENTIAL = N'*storeageaccountname*'
如果您查看生成的 URL,您会注意到该过程存储在 DIFF 目录中,但创建了一个完整的备份文件。
https://strorgage.blob.core.windows.net/server/instance/Database/2020/11/diff/Database_FULL_20201105_200000.bak
--^ --^
Run Code Online (Sandbox Code Playgroud)
DatabaseBackup (Ola proc) 是从 2019-06-14 开始的,所以它需要升级才能公平,但它已经运行了超过 18 个月。
我们不直接调用 Ola 代码,因为我们有一个构建 Azure 虚拟路径名的小包装程序,但本质上这就是我们调用 Ola 代码的方式。
这是一个问题,因为某些未知原因 DIFF 备份被提升为 FULL,这会导致每天 PB 级而不是 GB 级的 Azure blob 备份。
EXECUTE dbo.DatabaseBackup
@Database = @DatabaseName,
@URL = @BackupPath,
@Credential = @StorageAccount,
@BackupType = @backupType,
@Compress = @Compression,
@LogToTable = 'Y',
@ChangeBackupType = 'Y',
@Updateability = @DatabaseReadOnlyState,
@DirectoryStructure = NULL,
@AvailabilityGroupDirectoryStructure = NULL
Run Code Online (Sandbox Code Playgroud)
你对此有什么想法吗?
您说这种将 DIFF 升级为 FULL 备份是“随机的”,但我敢打赌,您可以在数据库本身中找到此活动与数据搅动(或索引维护)之间的联系。
因为您正在使用ChangeBackupType='Y',备份作业正在查看sys.dm_db_file_space_usage以查看数据库的更改量,如果超过阈值则执行完整备份(我很难从源代码中辨别默认阈值)。您可以通过调整ModificationLevel参数(百分比)来更改该阈值。从文档
ModificationLevel
指定将差异备份更改为完整备份的百分比。此选项只能与@ChangeBackupType = 'Y' 一起使用。DatabaseBackup 检查 sys.dm_db_file_space_usage 中的located_extent_page_count 和 modified_extent_page_count 以计算已修改的数据库量。
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |