SQL Server 2022新功能:将数据库备份到S3兼容的对象存储 ...

打印 上一主题 下一主题

主题 963|帖子 963|积分 2889

SQL Server 2022新功能:将数据库备份到S3兼容的对象存储

本文介绍将S3兼容的对象存储用作数据库备份目标所需的概念、要求和组件。 数据库备份和规复功能在概念上雷同于使用SQL Server备份到Azure Blob存储的URL作为备份设备范例。
要注意的是,不只是amazon S3对象存储,只要兼容S3协议的对象存储都可以备份。
对象存储集乐成能

SQL Server 2022(16.x)引入了对象存储集乐成能,使您可以将SQL Server与S3兼容的对象存储集成。为了提供这种集成,SQL Server支持一个S3连接器,它使用S3 REST API连接到任何S3兼容的对象存储提供商。SQL Server 2022(16.x)通过增长对使用REST API的新S3连接器的支持,扩展了现有的BACKUP/RESTORE TO/FROM URL命令的语法。

  • 指向S3兼容资源的URL以s3://为前缀,表现正在使用S3连接器。以s3://开头的URL始终假定底层协议为https。
  • 文件编号和文件大小限制 为了存储数据,S3兼容对象存储提供商必须将文件分割成多个称为“部门”的块,这雷同于微软Azure Blob存储中的块Blob。
S3端点的前提条件

S3端点必须按以下方式配置:

  • 1、必须配置TLS。假定全部连接将通过HTTPS而非HTTP举行安全传输。端点通过安装在SQL Server操纵体系主机上的证书举行验证。
  • 2、在S3兼容的对象存储中创建根据,具有实行操纵所需的适当权限。在存储层上创建的用户和密码被称为访问密钥ID(Access Key ID)和秘密密钥ID(Secret Key ID)。您需要这两个密钥才能对S3端点举行身份验证。
  • 3、至少配置了一个存储桶。
Linux平台支持

SQL Server使用 WinHttp 实现其所使用的HTTP REST API客户端。它依赖操纵体系证书存储来验证由HTTP(S)端点提供的TLS证书。然而,在Linux平台上运行的SQL Server的CA证书必须放置在一个预定义的位置,即/var/opt/mssql/security/ca-certificates 文件夹中,且该文件夹最多只能存储和支持前50个证书。在启动SQL Server进程之前,必须将CA证书放置在该位置。SQL Server在启动时从该文件夹读取证书,并将它们添加到信任存储中。
示例


  • 创建根据
根据的名称应提供存储路径,而且根据存储平台的不同有多个标准。
当使用S3连接器时,IDENTITY应始终为 'S3 Access Key'。 Access Key ID和Secret Key ID中不得包含冒号。 Access Key ID和Secret Key ID是在S3兼容的对象存储上创建的用户名和密码。 Access Key ID 必须具有适当的权限来访问S3兼容的对象存储中的数据。 使用CREATE CREDENTIAL创建服务器级根据以举行与S3兼容的对象存储端点的身份验证。
AWS S3 支持两种不同的 URL 标准。
  1. S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>(默认)
  2. S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
复制代码
代码如下:
  1. USE [master];
  2. GO
  3. CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>]
  4. WITH
  5.         IDENTITY    = 'S3 Access Key',
  6.         SECRET      = '<AccessKeyID>:<SecretKeyID>';
  7. GO
  8. BACKUP DATABASE [SQLTestDB]
  9. TO      URL = 's3://<endpoint>:<port>/<bucket>/SQLTestDB.bak'
  10. WITH    FORMAT ,STATS = 10, COMPRESSION;
复制代码
有多种方法可以为AWS的S3对象存储创建根据。

  • S3 存储桶名称:datavirtualizationsample
  • S3 存储桶区域:us-west-2
  • S3 存储桶文件夹:backup
  1. CREATE CREDENTIAL [s3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup]
  2. WITH    
  3.         IDENTITY    = 'S3 Access Key'
  4. ,       SECRET      = 'accesskey:secretkey';
  5. GO
  6. BACKUP DATABASE [AdventureWorks2022]
  7. TO URL  = 's3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup/AdventureWorks2022.bak'
  8. WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
  9. GO
  10. --或者
  11. CREATE CREDENTIAL [s3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup]
  12. WITH    
  13.         IDENTITY    = 'S3 Access Key'
  14. ,       SECRET      = 'accesskey:secretkey';
  15. GO
  16. BACKUP DATABASE [AdventureWorks2022]
  17. TO URL  = 's3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup/AdventureWorks2022.bak'
  18. WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
  19. GO
复制代码
备份到 URL和从 URL 规复

备份到 URL
  1. 以下示例将执行完整的数据库进行备份文件分割,然后备份到对象存储端点:
  2. BACKUP DATABASE <db_name>
  3. TO      URL = 's3://<endpoint>:<port>/<bucket>/<database>_01.bak'
  4. ,       URL = 's3://<endpoint>:<port>/<bucket>/<database>_02.bak'
  5. ,       URL = 's3://<endpoint>:<port>/<bucket>/<database>_03.bak'
  6. WITH    FORMAT ,STATS = 10, COMPRESSION;
复制代码
从 URL 规复
  1. 以下示例将从对象存储端点位置执行数据库恢复:
  2. RESTORE DATABASE <db_name>
  3. FROM    URL = 's3://<endpoint>:<port>/<bucket>/<database>_01.bak'
  4. ,       URL = 's3://<endpoint>:<port>/<bucket>/<database>_02.bak'
  5. ,       URL = 's3://<endpoint>:<port>/<bucket>/<database>_03.bak'
  6. WITH    REPLACE ,  STATS  = 10;
复制代码



 
 
加密和压缩备份选项

以下示例展示如何使用加密和压缩来备份和规复 AdventureWorks2022 数据库:
  1. CREATE MASTER KEY ENCRYPTION BY PASSWORD = <password>;
  2. GO
  3. CREATE CERTIFICATE AdventureWorks2022Cert
  4.     WITH SUBJECT = 'AdventureWorks2022 Backup Certificate';
  5. GO
  6. -- 备份数据库
  7. BACKUP DATABASE AdventureWorks2022
  8. TO URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022_Encrypt.bak'
  9. WITH FORMAT, COMPRESSION,
  10. ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = AdventureWorks2022Cert)
  11. GO
  12. -- 恢复数据库
  13. RESTORE DATABASE AdventureWorks2022
  14. FROM URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022_Encrypt.bak'
  15. WITH REPLACE
复制代码
使用区域参数举行备份和规复

以下示例展示如何使用REGION_OPTIONS选项举行备份和规复 AdventureWorks2022 数据库:
您可以在每个BACKUP / RESTORE命令中添加区域参数。 请注意,在BACKUP_OPTIONS和RESTORE_OPTIONS中使用了S3存储特定的区域字符串, 比方 '{"s3": {"region":"us-west-2"}}'。默认区域是 us-east-1。
  1. -- 备份数据库
  2. BACKUP DATABASE AdventureWorks2022
  3. TO URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022.bak'
  4. WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-2"}}'
  5. -- 恢复数据库
  6. RESTORE DATABASE AdventureWorks2022
  7. FROM URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022.bak'
  8. WITH  RESTORE_OPTIONS = '{"s3": {"region":"us-west-2"}}'
复制代码
 

SQL Server 2008的压缩备份是一个新特性,根据实际使用中的观察,压缩比至少在1:5左右,也就是备份时增长了压缩选项(COMPRESSION)后可以至少压缩到数据文件大小的20%甚至更低,
可以很大程度上加快备份实行时间,减轻IO压力和节省备份服务器的磁盘存储空间。
  1. -- 备份数据库
  2. BACKUP DATABASE SQLTestDB TO DISK = 'c:\tmp\SQLTestDB.bak'  WITH stats =5 , COMPRESSION
  3. GO
复制代码
 

 
总结

SQL Server 2022通过新引入的S3连接器,SQL Server能够支持通过REST API与S3兼容存储集成。用户可以配置存储桶和根据,通过URL指向存储位置举行备份和规复。别的,还提供了加密、压缩等备份选项,以及在Linux平台上的特别配置要求。示例展示了如何创建根据、实行备份和规复操纵,支持区域参数指定备份和规复的地域。
 
 
参考文章
https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/sql-server-backup-to-url-s3-compatible-object-storage?view=sql-server-ver16&viewFallbackFrom=sql-server-ver15
https://aws.amazon.com/cn/blogs/modernizing-with-aws/backup-sql-server-to-amazon-s3/
https://www.mssqltips.com/sqlservertip/7302/backup-sql-server-2022-database-aws-s3-storage/
 
 

本文版权归作者全部,未经作者同意不得转载。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表