迁移至指定SQL Azure SKU后如何实现15分钟RPO?
背景信息
我们正将一个交易相关数据库迁移至SQL Azure,目标规格如下:
Single Database, vCore, General Purpose, Provisioned, Standard-series (Gen 5), Locally Redundant, 1 - 12 vCore Database(s) x 1 Month, RA-GRS Backup Storage Redundancy, 200 GB Point-In-Time Restore, 2 x 800 GB Long Term Retention
该数据库当前部署在本地SQL Server上,通过向DR站点进行日志传送,可向业务承诺15分钟的RPO。此前误以为本地冗余vCore版SQL Azure承诺的最大RPO为12小时,现需确认:能否通过日志传送或每15分钟执行一次日志备份,在当前SKU下实现相同的15分钟RPO?
先纠正RPO认知偏差
首先明确:General Purpose层的SQL Azure单数据库,默认点-in-time恢复(PITR)的RPO为5分钟,远低于你提到的12小时(该信息属于误解)。不过若业务需要严格的15分钟RPO保障,以下两种方案均可行:
方案1:自定义15分钟事务日志备份
你可以手动配置定时任务,每15分钟执行一次事务日志备份,将备份文件存储至Azure Blob存储,示例命令如下:
BACKUP LOG [YourTargetDB] TO URL = 'https://yourstorageaccount.blob.core.windows.net/log-backups/yourdb_log_20240520_1415.bak' WITH COMPRESSION, STATS = 10;
恢复时,先还原最新的完整备份,再依次应用后续的日志备份,即可将数据恢复到最近15分钟内的状态。这种方式需要自行管理备份计划、存储生命周期及恢复流程,但能精准控制RPO在15分钟以内。
方案2:SQL Azure日志传送
当前SKU支持日志传送功能,可将目标数据库同步至另一个SQL Azure单数据库(同区域或跨区域),配置为每15分钟传送一次事务日志:
- 源库:已迁移完成的目标SQL Azure数据库
- 目标库:同SKU或兼容SKU的SQL Azure数据库(作为DR站点)
日志传送会自动完成日志备份、复制和恢复操作,确保目标库与源库的数据差异不超过15分钟,以此达成15分钟RPO。需注意,日志传送的目标库处于只读状态,故障转移时需手动切换。
总结
在选定的General Purpose vCore SKU下,两种方案均可实现15分钟RPO:
- 自定义日志备份适合需要灵活控制备份存储、恢复流程的场景
- 日志传送适合需要自动维护DR站点、简化故障转移操作的场景
若仅需满足15分钟RPO的恢复需求,其实默认的PITR(5分钟RPO)已完全覆盖,但上述方案能提供更自定义的备份策略或独立的DR站点能力。
内容的提问来源于stack exchange,提问作者manishKungwani

