你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
故障转移链接 - Azure SQL 托管实例
适用于: Azure SQL 托管实例
本文介绍如何使用 SQL Server Management Studio (SSMS) 或 PowerShell 来故障转移 SQL Server 和 Azure SQL 托管实例之间链接的数据库。
注意
- 目前只能在预览版中将 Azure SQL 托管实例配置为初始主要副本,并且仅从 SQL Server 2022 CU10 开始支持此功能。
先决条件
若要通过链接将数据库故障转移到次要副本,需要满足以下先决条件:
- 一个有效的 Azure 订阅。 如果没有帐户,请创建一个免费帐户。
- 支持的 SQL Server 版本,安装了所需的服务更新。
- 主副本和辅助副本之间配置的链接。
停止工作负载
若要将数据库故障转移到次要副本,请先在维护时段停止主要副本上的任何应用程序工作负载。 这使数据库复制能够赶上次要副本,让你能在不丢失数据的情况下故障转移到次要副本。 在进行故障转移之前,请确保应用程序不会向主要副本提交事务。
故障转移数据库
可以使用 SQL Server Management Studio 或 PowerShell 来故障转移链接的数据库。
使用 SSMS 中的“SQL Server 和托管实例之间的故障转移”向导,将数据库从主要副本故障转移到次要副本。
可以从主要副本或次要副本执行计划的故障转移。 若要执行强制故障转移,请连接到次要副本。
注意
- 在进行故障转移之前,请停止源数据库上的工作负载,使复制数据库能够完全赶上进度并完成故障转移,且不会丢失数据。 如果你正在执行强制故障转移,则可能会丢失数据。
- 若在 SQL Server 2019 及更早版本中故障转移数据库,会断开并删除两个副本之间的链接。 无法故障回复到初始主要副本。
- 目前可在预览版中故障转移数据库,同时保留与 SQL Server 2022 的链接。
若要故障转移数据库,请执行以下步骤:
打开 SSMS 并连接到任一副本。
在“对象资源管理器”中,右键单击复制的数据库,将鼠标悬停在“Azure SQL 托管实例链接”上,并选择“故障转移...”打开“SQL Server 和托管实例之间的故障转移”向导。 如果有来自同一数据库的多个链接,请在“对象资源管理器”中的“Always On 可用性组”下展开“可用性组”,然后右键单击要用于故障转移的链接所属的分布式可用性组。 选择“故障转移...”打开“SQL Server 和托管实例之间的故障转移”向导,以获取该特定链接。
在“简介” 页上,选择“下一步”。
“选择故障转移类型”页显示有关每个副本、所选数据库的角色以及支持的故障转移类型的详细信息。 可以从任何副本启动故障转移。 如果选择强制故障转移,则必须选中相应的方框,以表明你了解可能会出现数据丢失的情况。 选择下一步。
注意
如果要迁移到 Azure SQL 托管实例,请选择“计划内故障转移”。
在“登录到 Azure 和远程实例”页上:
- 选择“登录”以提供凭证并登录到 Azure 帐户。
- 根据在上一页上选择的故障转移类型,登录选项的功能会有所不同。 对于计划内故障转移,必须登录到远程实例(SQL Server 或 SQL 托管实例)。 对于强制故障转移,登录是可选的,因为支持以下两种应用场景:
- 真正的灾难恢复:由于主实例在真正的灾难期间通常不可用,因此无法登录,用户必须立即故障转移到辅助实例,使其成为新的主实例。 中断得到解决后,链接处于不一致状态,因为两个副本现在都处于主要角色(脑裂应用场景)。
- 灾难恢复演练:不建议使用强制故障转移执行灾难恢复演练,因为可能存在潜在的数据丢失。 但是,在演练期间,由于主实例可用,因此支持登录,并且你可以选择撤消这两个副本的角色,以避免脑裂应用场景的出现。
在“故障转移后操作”页上,SQL Server 2022 和早期版本之间的选项不同,你是否能够连接到主实例也会导致选项不同。
- 对于 SQL Server 2022,可以选择停止副本之间的复制操作,这会在故障转移完成后删除链接和分布式可用性组。 如果要维护链接并继续执行副本之间的复制操作,请取消选中相应的方框。 如果选择删除链接,还可以选中相应的方框来删除可用性组(如果只是为了将数据库复制到 Azure 而创建,并且你不再需要该可用性组)。 选中适合你的场景的相应方框,然后选择“下一步”。
- 对于 SQL Server 2019 及更早版本,默认情况下,“删除链接”的选项已选中,并且无法取消选中该选项,这是因为故障转移到 SQL 托管实例时会停止复制操作、断开连接并删除分布式可用性组。 选中此框以表明你了解链接将被删除,然后选择“下一步”。
- (可选)如果能够在上一页上登录到 SQL Server 实例,还可以通过选中“清理”部分中的框,在强制故障转移后删除 SQL Server 实例上的可用性组。
在“摘要”页上查看操作。 或者,选择“脚本”以生成脚本,以便将来可以轻松地使用同一链接对该数据库进行故障转移。 准备好对数据库进行故障转移时,选择“完成”。
完成所有步骤后,“结果”页会在已成功完成的操作旁边显示复选标记。 现在可以关闭窗口。
如果选择为 SQL Server 2022 维护链接,则次要副本将变为新的主要副本,该链接仍然处于活动状态,你可以故障回复到次要副本。
如果使用的是 SQL Server 2019 及更早版本,或者选择为 SQL Server 2022 删除链接,则链接将被删除,故障转移完成后不会再存在。 每个副本上的源数据库和目标数据库都可以执行读/写工作负荷。 它们是完全独立的。
重要
成功故障转移到 SQL 托管实例后,手动将应用程序连接字符串重新指向 SQL 托管实例 FQDN,以完成迁移或故障转移过程,并继续在 Azure 中运行。
故障转移后查看数据库
对于 SQL Server 2022,如果选择维持链接,则可以检查分布式可用性组是否存在于 SQL Server Management Studio 中对象资源管理器的可用性组下。
如果在故障转移期间删除了链接,则可以使用对象资源管理器来确认分布式可用性组不再存在。 如果选择保留可用性组,则数据库仍将同步。
清理可用性组
由于使用 SQL Server 2022 进行故障转移不会中断此链接,因此可以在故障转移后维持链接,这会使可用性组和分布式可用性组保持活动状态。 无需执行其他操作。
但是,删除链接只会删除分布式可用性组,并使可用性组保持活动状态。 可以决定保留可用性组,或将其删除。
如果决定删除可用性组,请替换以下值,然后运行示例 T-SQL 代码:
<AGName>
替换为 SQL Server 上可用性组的名称(用于创建链接)。
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName>
GO
相关内容
有关链接功能的详细信息,请参阅以下资源:
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈