嫌长不看版
本文介绍了通过复制和导出两个操作,将 Azure SQL 数据库中的内容转移至其他位置(例如本地环境)的具体做法。借此可以帮助用户在 Azure 中运行数据库的同时,在本地或指定的其他位置额外保留一个副本,满足制度或业务等各方面的要求。
操作细节版
很多用户向小编提出了这样一个问题:已经在使用 Azure SQL 数据库服务,虽然该服务有非常完善的数据备份和灾备机制,但出于公司制度或其他方面的要求,需要定期将数据库的完整内容下载到本地保存,哪怕手工操作也可以。
这当然是可以的,不过首先小编想再次向大家强调一下 Azure SQL 服务提供的各种数据保护机制:
- Azure SQL 可在(基本、标准、高级三个服务级别的)数据库层面提供 99.99% 的服务级别协议。
- 高级版提供主动地域复制功能,可在任何 Azure 区域创建多达 4 个可读辅助副本,并控制在何时何处进行故障转移。
- 通过自助式还原可更好地对“不利条件下的恢复”加以控制,客户可以从可用数据备份副本控制数据还原的全过程。
- 在高级版中,SQL 数据库最多可将备份副本保存 35 天,供您随时进行恢复。
好了,明确这些问题后,看看到底该如何将 Azure SQL 中的数据保存到本地吧。
方法一:对 Azure SQL 数据库进行复制
对于 Azure SQL 数据库,我们可以用多种方式在相同或不同服务器上创建现有 Azure SQL 数据库的事务一致性副本。数据库副本是源数据库截至复制请求发出时的快照,我们可以选择相同或不同服务器、其服务层和性能级别、相同服务层中的不同性能级别(版本)。在完成复制后,副本将成为能够完全行使功能的独立数据库。此时,可以将其升级或降级为任何版本。
我们可以根据具体需要,通过 Azure 门户、PowerShell,或者 Transact-SQL 将 Azure SQL 数据库复制到本地(或者其他位置)。
以 Azure 门户下的操作为例,只需登录 Azure 管理门户,打开要复制的数据库相应的配置界面,然后点击工具栏上的「复制」,并选择要复制到的目标服务器,这就可以了。
当然也可以通过 PowerShell,使用 New-AzureRmSqlDatabaseCopy 这个 cmdlet 进行复制:
这个方法的进一步介绍,以及更多操作方式的具体做法,可以参阅:复制 Azure SQL 数据库。
方法二:将 Azure SQL 数据库导出为 BACPAC 文件
除了进行复制,也可以执行导出操作,获得 Azure SQL 数据库对应的 BACPAC 文件。这种方式更适合数据存档或转移至其他平台等用途。
BACPAC 文件是一个扩展名为 BACPAC 的 ZIP 文件,它包含来自 SQL Server 数据库的元数据和数据。我们可将 BACPAC 文件存储在 Azure Blob 存储或本地存储中,之后可以导入回 Azure SQL 数据库或 SQL Server 本地安装。
使用该方法前有几个问题需要注意:
- 为保证导出的事务处理方式一致,必须确保导出期间未发生写入活动,或者正在从 Azure SQL 数据库的事务处理方式一致性副本中导出。
- 如果是导出到 Blob 存储,则 BACPAC 文件最大大小为 200GB。若要存档更大的 BACPAC 文件,请导出到本地存储。
- 不支持使用这个方法将 BACPAC 文件导出到 Azure 高级存储。
- 如果从 Azure SQL 数据库进行的导出操作超过 20 个小时,系统可能会取消该操作。
我们可以通过 Azure 门户、SQL Package 实用程序、SQL Server Management Studio,以及 PowerShell将 Azure SQL 数据库导出为 BACPAC 文件。
以 Azure 门户下的操作为例,只需登录 Azure 管理门户,打开要导出的数据库相应的配置界面,然后点击工具栏上的「导出」,并选择要导出到的存储位置和其他选项即可。
此外也可以通过 PowerShell,使用 New-AzureRmSqlDatabaseEmport 这个 cmdlet 向 Azure SQL 数据库服务提交导出数据库请求。
这个方法的进一步介绍,以及更多操作方式的具体做法,可以参阅:将 Azure SQL 数据库导出到 BACPAC文件。