[英]How to schedule daily backup of azure sql managed instance databases to an azure blob
我有一个 Azure 存储帐户和一个 blob 容器。 我的 azure sql 托管实例上有 6 个数据库。 我想根据指定的 CRON 表达式安排所有数据库到 blob 的自动每日备份。 如何实现这一点。 我应该使用一些工具或代理还是可以在 azure 门户中配置?
Azure SQL 托管实例每天进行自动备份,每 5-10 分钟进行一次日志备份。
如果除了自动备份之外,您只是为了安心而希望备份数据库,请尝试 ola hallengren 备份作业,它应该可以备份到 blob。
https://ola.hallengren.com/sql-server-backup.html
请记住,如果您使用基于服务器的 TDE,那么仅复制备份将不起作用,您需要从数据库中删除 TDE 密钥,然后进行备份。 否则,您可以使用密钥保管库中的 BYOK 加密 SQL MI 和数据库,这样您就可以毫无问题地进行备份。
希望这会有所帮助
如果您想通过 T_SQL 执行此操作,我建议您执行以下操作
1- 如果不存在,则创建一个 Blob/Container。
2- 为 blob 创建一个 SAS 令牌。 我建议使用 Azure 存储资源管理器。 通过它要容易得多。 同时复制 blob 存储的 URI
3- 使用 T-SQL 创建凭证
尝试先使用 T-SQL 进行手动备份,看看它是否有效。 确保更改备份位置和 dbname
BACKUP DATABASE [<DBname>]
TO URL = '<https://sqlbackupri.blob.core.windows.net/sqlbackupsmi/Adventureworks1.bak>'
WITH COMPRESSION
,STATS = 5
,COPY_ONLY;
GO
如果可行,请下载维护脚本并在数据库上运行它,这样您的所有 SP 都将位于同一个数据库中。 我通常会创建一个 shell 数据库,例如 _DBA_Tool
当您运行脚本时,它会询问您是否要创建作业,您可以 select 是或否。 我会 select 不,因为您正在寻找创建 SQL 代理工作来做备份
https://ola.hallengren.com/scripts/MaintenanceSolution.sql
一旦你运行它并且它已经在 DBA 数据库中创建了 SP,你可以提前 go 并在 SSMS 中创建一个 SQL 代理作业并像这样运行
EXECUTE _DBATools.dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@URL = '<https://sqlbackupr.blob.core.windows.net/sqlbackupsmi>',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y',
@CopyOnly = 'Y'
GO
请记住,该脚本不会清除任何备份,您应该考虑使用 Azure 自动化帐户或 Powershell 脚本进行自动清理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.