我们一直在保存其中一台生产服务器的备份(实际上是一个 Always On 可用性组)
sqlcmd -E -S $(ESCAPE_SQUOTE(SRVR)) -d master
-Q "EXECUTE dbo.DatabaseBackup
@AvailabilityGroups = 'SQLAG',
@URL = 'https://MYCOMPANYbackups.blob.core.windows.net/SQLMAINSERVER-datafiles-full',
@Credential = 'SQLAzureCredential',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y',
@LogToTable = 'Y'" -b
Run Code Online (Sandbox Code Playgroud)
这是我在尝试连接到 Azure 时看到的:我的存储帐户是什么?
我有一份工作,我计划向我发送一封关于服务器上所有备份的电子邮件。收集有关备份的信息并发送电子邮件的脚本在这里。
电子邮件告诉我备份在哪里。例如:
我如何才能访问备份文件?
编辑:
大卫布朗的回答让我明白了,谢谢大卫。
我只是在这里添加了一组将我带到备份的步骤(在成功连接到 azure 之后)。
01 - 点击 Blob
02 - 选择其中一个容器
03 - 文件将在那里 - 准备下载
这篇文章也很有趣:
sql-server backup availability-groups sql-server-2016 azure-blob-storage
这里有一个问题,我需要一些帮助来解决。
托管一个数据库,大约 400Gigs。这让我们有点头疼让它与托管备份到 Azure 存储容器一起工作。
这是我们得到的错误
10/21/2018 12:45:18,spid149,Unknown,Write to backup block blob device https://NAME.blob.core.windows.net/CONTAINER/DB_NAME_20181021120709+02.bak failed. Device has reached its limit of allowed blocks.
Run Code Online (Sandbox Code Playgroud)
设置完成
EXEC managed_backup.sp_backup_config_basic
@database_name = 'DB_NAME',
@enable_backup=1,
@container_url = 'https://NAME.blob.core.windows.net/CONTAINER',
@retention_days=30;
USE msdb;
GO
EXEC managed_backup.sp_backup_config_schedule
@database_name = 'DB_NAME'
,@scheduling_option = 'Custom'
,@full_backup_freq_type = 'Daily'
,@backup_begin_time = '00:30'
,@backup_duration = '02:00'
,@log_backup_freq = '00:05'
GO
Run Code Online (Sandbox Code Playgroud)
并且日志备份运行良好,所以我们知道凭证没问题。但是它不会备份数据库,因为它太大了,所以需要拆分。但是怎么做呢?当我像这样运行手动备份时
Use MSDB
Go
EXEC managed_backup.sp_backup_on_demand
@database_name = 'DB_NAME'
,@type = 'Database'
Run Code Online (Sandbox Code Playgroud)
它确实在 Azure 容器中将其分成两部分。那么我如何获得拆分 BAK 文件的自动作业。
我们在 SQL Server 2017 上运行。 …
多年来,我们一直在使用事实上的标准 Ola Hallengrin 维护解决方案,即使在我们迁移到 Azure 并开始使用 blob 作为备份目标之后也是如此。但是,出于性能原因,我一直在研究通过块 blob 而不是页 blob 进行备份,利用具有共享访问签名而不是凭据的存储容器,并一次使用 4-8 个 URL 路径进行备份和恢复。结果非常清晰 - 未压缩备份的恢复性能为 30MB/s,压缩备份的恢复性能为 70MB/s,每个都有 1x URL。使用 4x URL,MAXTRANSFERSIZE = 4194304,& BLOCKSIZE = 65536,.. 131MB/s。使用 8x URL,245MB/s。备份也有类似的故事。
我写信是想看看是否有人知道继续利用 Ola 软件包的方法。似乎包中的 URL 支持结构适用于基于凭据的页面 blob,但没有任何用于 SAS 和条带化 URL 的逻辑。我从没想过这会有什么不同,但这是白天和黑夜。
我从这个文档开始并努力取得成功:https : //blogs.msdn.microsoft.com/sqlcat/2017/03/10/backing-up-a-vldb-to-azure-blob-storage/
下面的测试数据库在磁盘上大约为 85GB,始终压缩到 44GB。
BACKUP DATABASE [yeahokyeahok] TO
URL = N'https://az1yeahok01.blob.core.windows.net/adamtest01/yeahokyeahok_backup_2018_03_08_194161.bak'
,URL = N'https://az1yeahok01.blob.core.windows.net/adamtest01/yeahokyeahok_backup_2018_03_08_194161_2.bak'
,URL = N'https://az1yeahok01.blob.core.windows.net/adamtest01/yeahokyeahok_backup_2018_03_08_194161_3.bak'
,URL = N'https://az1yeahok01.blob.core.windows.net/adamtest01/yeahokyeahok_backup_2018_03_08_194161_4.bak'
--,URL = N'https://az1yeahok01.blob.core.windows.net/adamtest01/yeahokyeahok_backup_2018_03_08_194161_5.bak'
-- URL = N'https://az1yeahok01.blob.core.windows.net/adamtest01/yeahokyeahok_backup_2018_03_08_194161_6.bak'
WITH NOFORMAT, NOINIT, NAME = N'yeahokyeahok-Full Database Backup', …
Run Code Online (Sandbox Code Playgroud) 我已在 azure blob 存储容器中设置了 SAS 令牌。目前它是有效的,正如 Windows cmd.exe 中的此命令有效的事实所证明的那样:
azcopy list "https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/path/to/file.BAK?<SAS token>"
Run Code Online (Sandbox Code Playgroud)
并作为输出返回:
INFO: ; Content Length: 7.58 GiB
Run Code Online (Sandbox Code Playgroud)
现在,如果我通过 SSMS 在 SQL Server 中发出以下命令(服务器在发出 azcopy 命令的同一台计算机上本地运行,并且 <> 括号中的值与上面相同。请注意,我末尾没有“/”容器名称,并且令牌中没有“?”,遵循 Microsoft 文档的建议):
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
-- this name must match the container path, start with https and must not contain a forward slash at the end
WITH IDENTITY='SHARED ACCESS SIGNATURE'
-- this is a mandatory string and should not be changed
, SECRET = '<SAS token>';
GO
RESTORE HEADERONLY FROM …
Run Code Online (Sandbox Code Playgroud)