将数据移到 SQL 托管实例
许多迁移涉及本地数据库和云数据库必须保持同步的时间段。 例如,客户端可能会更改这两个数据库。
已将体育零售产品数据库迁移到 Azure SQL 托管实例。 该网站已在使用云数据库。 开始重新配置客户端以使用新数据库。 你已决定分批将用户转换为新系统。 对于每个团队,在迁移下一个用户之前,你将花时间解决任何问题。 此方法允许进行故障排除和问题解决,而不会同时中断所有用户。 接下来,你将重新配置数据分析系统以使用 Azure 中的新数据库。 在此期间,需要确保每小时同步云和本地数据库。
你将探索实现数据同步的各种方法。 如果只需要传输表的子集,也可以使用这些方法选择性地迁移数据。 这种灵活性允许更定制的数据迁移方法。
本地服务器的连接选项
通常,想要将数据保存在与 Azure SQL 托管实例同步的本地数据库中。 你可能希望分阶段将客户端应用程序迁移到新数据库,例如,这会导致在某段时间内,客户端需要连接到两个数据库。
在选择数据同步方法之前,请务必确保连接安全。 有三种不同的连接选项可用于在本地计算机与 Azure 中的资源之间建立通信。
- Point-to-Site 点到站点 (P2S) VPN 网关连接允许您创建从单个客户端计算机到虚拟网络的安全连接。
- 站点到站点。 站点到站点 VPN 网关用于将整个本地站点连接到 Azure 网络。
- ExpressRoute。 使用 Azure ExpressRoute,可以在 Azure 数据中心与本地基础结构或托管环境中的基础结构之间创建专用连接。 ExpressRoute 连接不会通过公共 Internet,并且比典型的 Internet 连接提供更高的可靠性、更快的速度、更低的延迟和更高的安全性。
公共终结点
SQL 托管实例的公共终结点可帮助在不使用 VPN 的情况下从 Internet 连接到数据库,并且仅用于数据通信。 数据的公共终结点可以同时与专用终结点共存。 出于安全原因,实现允许在启用公共终结点时在数据库管理员与网络管理员之间分离职责(SoD)。
若要为托管实例启用公共终结点,需要执行两个步骤。 对于 SoD,需要具有以下数据库和网络权限的两个单独的角色才能完成以下步骤:
- 在范围Microsoft.Sql/managedInstances/* 中具有基于角色的访问控制权限的数据库管理员必须运行 PowerShell 脚本才能为托管实例启用公共终结点。
- 在范围Microsoft.Network/* 中具有基于角色的访问控制权限的网络管理员必须打开网络安全组(NSG)上公共终结点使用的端口 3342,并提供 UDR 路由以避免非对称路由。
选择同步方法
可以使用多种方法将数据从 SQL 数据库托管实例同步到本地服务器,并将数据从本地服务器同步回 SQL 数据库托管实例。
本机备份和还原
可以使用共享访问签名(SAS)从 Azure Blob 存储文件还原 Azure SQL 托管实例中的数据库。
涉及到创建能够访问 Azure Blob 存储的凭据,然后使用带有 COPY_ONLY 选项的 BACKUP DATABASE 命令。 如果数据库大于 200 GB,可以通过提供多个 URL 位置来使用条带备份。
BACKUP DATABASE YourDatabase TO URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak' WITH COPY_ONLY
若要在 SQL 托管实例中还原数据库,请执行以下作:
RESTORE DATABASE YourDatabase FROM URL = 'https://youraccount.blob.core.windows.net/yourcontainer/yourdatabase.bak'
使用 SqlPackage 的 BACPAC 文件
BACPAC 文件实质上是数据库的元数据和数据压缩版本。 虽然此部署方法与 SQL 数据库兼容,但 SQL 托管实例不支持在 Azure 门户中通过 BACPAC 进行迁移。 或者, SQLPackage 实用工具 应与 BACPAC 文件一起使用。
大容量复制程序 (BCP)
BCP 实用工具是一种命令行工具,可将表导出到文件,以便导入它们。 使用此方法从单个 SQL 数据库迁移到 SQL 托管实例并返回。
Azure 数据工厂 (ADF)
Azure 数据工厂 是为数据移动和业务流程构建的,侧重于引入。 ADF 提供集成运行时支持以运行 SSIS 包,并提供 SQL 托管实例的公共互联网支持。
事务复制
事务复制 是在连续连接的数据库服务器之间移动数据的一种方法。
该过程从发布数据库中的对象和数据的快照开始。 创建初始快照后,发布服务器上的数据或架构的任何后续更改通常会在发生时近乎实时地传送到 Azure SQL 托管实例。
SQL 托管实例很灵活,因为它可以是发布服务器、分发服务器和订阅服务器。
复制是少数几项允许复制数据表部分的技术之一。 我们将这些表部件称为 文章。 然后,此数据将发送到分发服务器,该分发服务器是向任意数量的订阅者提供数据供应商。
要求
- 连接时,在复制参与者之间使用 SQL 身份验证。
- 用于复制的工作目录的 Azure 存储帐户共享。
- 在托管实例子网的安全规则中打开端口 445(TCP 出站),以访问 Azure 文件共享。
- 如果发布服务器或分发服务器位于托管实例上,并且订阅服务器位于本地,则打开端口 1433(TCP 出站)。
将应用程序连接到 SQL 托管实例
SQL 托管实例必须放置在专用于托管实例的 Azure 虚拟网络子网中。 此部署提供安全的专用 IP 地址,并能够连接到本地网络。
用户和客户端应用程序可以通过 Azure 门户、PowerShell、Azure CLI 和 REST API 连接到托管实例数据库。
所有通信都使用证书进行加密和签名。 若要检查通信方的可信度,托管实例会通过证书吊销列表不断验证这些证书。 如果证书被吊销,SQL 托管实例将关闭连接以保护数据。