AWS 新增向 DaaS 上备份本地 SQL Server 的支持

  • Richard Seroter
  • 谢丽

2016 年 8 月 11 日

话题:数据库AWSDevOps语言 & 开发

AWS 发布了一个针对其关系型数据库服务(RDS)的更新,让用户可以利用本地 SQL Server 的备份和恢复功能。该功能可以简化数据库迁移和灾难恢复,AWS 通过抢先发布来和微软 Azure 争夺市场。

目前为止,RDS——除了 SQL Server 外,还支持 MySQL、PostgreSQL 和 Oracle 数据库引擎——只提供了执行存储卷或实例及备份的能力。这些 AWS 特有的快照将所有数据库备份到服务器上,并支持按时间点恢复。在一篇有关 RDS for SQL Server 本地备份支持的博文中,Amazon 的 Jeff Barr 阐述了该特性如何让 RDS 对 SQL Server DBA 更具吸引力:

SQL Server 本地备份包含所有数据库对象:表、索引、存储过程和触发器。这些备份常常用于在本地或云端运行的不同 SQL Server 实例之间迁移数据库。它们可以用于数据获取、灾难恢复等。本地备份还简化了从本地 SQL Server 实例导入数据和模式的过程,对 SQL Server DBA 来说,更容易理解和使用。

本地备份需要做三件事:准备一个Amazon S3存储桶用于存储备份文件及一个AWS“角色”用于访问 S3 存储桶,并引用 RDS 实例配置(称为一个选项组)中针对 SQL Server 的“SQLSERVER_BACKUP_RESTORE”。按照 AWS 的说法,与 Amazon S3 搭配使用为用户提供了一种持久化的远程存储选项,让其可以与本地数据库配合使用。

那些备份可以恢复成 SQL Server 或者另外一个基于 RDS 的 SQL Server 实例的一个本地副本。你还可以将本地数据库的备份复制到 S3,然后将它们恢复到 RDS SQL Server 实例。

RDS for SQL Server 提供了全量数据库备份,而不是增量,这些备份可以通过集成 AWS 密钥管理服务进行加密。

本地备份使用标准的 SQL Server .bak 文件。AWS 表示,.bak 文件经过了“大量的优化”,代表了“最快的数据库备份和恢复方式。”他们针对本地备份和恢复列出了一系列的使用场景。

  • 轻松地将数据库迁移到 Amazon RDS。
  • 轻松地将数据库在 Amazon RDS SQL Server DB 实例之间迁移。
  • 轻松地导入和导出数据。
  • 轻松地迁移模式、存储过程、触发器和其他数据库代码。
  • 轻松地改变存储类型或存储容量。
  • 备份和恢复单个数据库,而不是整个数据库实例。
  • 创建数据库副本用于测试、培训和演示。
  • 通过 Amazon S3 存储备份文件,并将备份文件传入 / 传出 Amazon RDS,增加了一个灾难恢复防护层。

对于那些无法使用本地备份和恢复的 DBA,AWS 为他们准备了一份文档,指出了几种云友好的SQL Server 数据导入 / 导出方法。

Brent Ozar是一个为这项新功能而兴奋的人。他是一位知名的 SQL Server 专家,同时也是Brent Ozar Unlimited的创始人。这是一家专门从事 SQL Server 优化的小公司。在题为“天啊,Amazon RDS SQL Server 改变了一切”的博文中,Ozar 认为这“相当、相当、相当了不起。”

目前为止,还有一个最大的问题,就是 Azure SQL DB 和 Amazon RDS SQL Server 都不能访问备份文件。如果你想取出数据,就得费事地使用类似导入 / 导出向导、BCP 或同步应用这样的东西。

微软的 Azure SQL 数据库服务尚未提供这项特性,Ozar 希望 Amazon 推出 SQL Server 支持会迫使微软快速追赶。在这篇博文中,Ozar 清楚地说明了本地存储和恢复的具体应用场景。

  • 我是本地环境,我希望把云用于 DR。”只需要像平时一样进行完整的备份,但要使用一个类似Cloudberry Drive这样的工具将它们自动同步到 Amazon S3。当灾难发生时(或者最好是你希望远在灾难发生之前测试并记录这个过程),启动一个 Amazon RDS SQL Server 实例,并恢复备份。转眼之间,你就重新回到了工作中。(我略过了所有与 Web 和应用服务器设置相关的部分,但那是开发人员 /devops/sysadmin 需要处理的问题,对吧?)

  • 我有很大的数据库,并且我希望试验云,但我无法快速上传。将存有备份的 USB 硬盘发给 Amazon,他们会将备份复制到 S3,然后,你就可以启动 RDS 实例。有了更多的数据怎么办?请查阅 Amazon Snowball

  • 我在使用云,我希望可以跨提供商 DR。”运行 Amazon RDS 中的主 SQL Server,设定计划,定期备份到 Amazon S3,然后使用一个跨提供商文件同步工具或者推出自己的服务将那些备份文件从 Amazon S3 推送到 Azure 或 Google Drive。当 Amazon 上灾难发生时(或你只是希望撤出 Amazon,换其他云提供商),只要在其他地方恢复那个备份。如果你想要刷新本地开发或报表服务器,则情况相同。

  • 我在使用云,但数据的增长速度可能会超过平台即服务。”PaaS 极大地简化了管理,但 Amazon 和 Azure 均限制了数据库的大小。从根本上说,将数据库放在 Amazon RDS 或 Azure SQL DB 上是一次赌博,赌你的数据增长比他们的数据库大小限制的增长慢许多。如果你预测错误——这很棒,因为数据的快速增长通常意味着你发财了——则可以轻松地转换到 IaaS(云中自己管理的 SQL Server),而不必经历数据导出的痛苦。

该 RDS 特性不需要额外的费用,不过用户使用 Amazon S3 存储时会产生正常的费用。AWS 提供的这项特性可以用于 RDS 支持的任何 SQL Server 版本,并且既可以用于单可用区域部署选项,也可以用于多可用区域部署选项。至于限制,AWS 不允许用户备份超过 1TB 的数据库,或者恢复超过 4TB 的数据库。用户也无法将备份恢复到一个创建它的实例。备份只能恢复到一个全新的数据库实例。

查看英文原文: AWS Adds Native SQL Server Backups to Database-as-a-Service

数据库AWSDevOps语言 & 开发