为 Azure SQL 数据库配置异地复制
预计时间:30 分钟
作为 AdventureWorks 中的数据库管理员 (DBA),你需要为 Azure SQL 数据库启用异地复制,并确保它正常工作。 此外,你将使用门户手动地将其故障转移到另一个区域。
📝 这些练习可能要求复制粘贴 T-SQL 代码并使用现有的 SQL 资源。 在执行代码之前,请验证代码是否已正确复制。
设置环境
如果实验室虚拟机已提供并预配置,则应在 C:\LabFiles 文件夹中找到已准备好的实验室文件。 花点时间检查,如果文件已存在,请跳过本部分。 但是,如果使用自己的计算机或缺少实验室文件,则需要从 GitHub 克隆它们才能继续。
-
如果未提供实验室虚拟机或本地计算机,请启动 Visual Studio Code 会话。
-
打开命令面板 (Ctrl+Shift+P),然后键入 Git: Clone。 选择 Git: Clone 选项。
-
将以下 URL 粘贴到存储库 URL字段中,然后选择 Enter。
https://github.com/MicrosoftLearning/dp-300-database-administrator.git
-
将存储库保存到实验室虚拟机上的 C:\LabFiles 文件夹,如果没有提供本地计算机,则保存到本地计算机上的相应文件夹(如果文件夹不存在,则创建该文件夹)。
在 Azure 中设置 SQL Server
登录到 Azure 并检查是否已在 Azure 中运行现有的 Azure SQL Server 实例。 如果已在 Azure 中运行 SQL Server 实例,请跳过本部分。
-
如果未提供实验室虚拟机或本地计算机,请启动 Visual Studio Code 会话,然后从上一部分导航到克隆的存储库。
-
右键单击 /Allfiles/Labs 文件夹,然后选择“在集成终端中打开”。
-
使用 Azure CLI 连接到 Azure。 输入以下命令并选择 Enter。
az login
📝 请注意,浏览器窗口将打开。 使用 Azure 凭据登录。
-
登录到 Azure 后,可以创建资源组(如果尚不存在),并在该资源组下创建 SQL Server 和数据库。 输入以下命令并选择 Enter。 完成该脚本需要几分钟时间。
cd ./Setup ./deploy-sql-database.ps1
📝 请注意,默认情况下,此脚本将创建名为 contoso-rg 的资源组,或使用名称以 contoso-rg 开头的资源(如果存在)。 默认情况下,它还会在美国西部 2 区域 (westus2) 上创建所有资源。 最后,它将为 SQL 管理员密码生成随机 12 个字符的密码。 可以通过将一个或多个参数 -rgName、-location 和 -sqlAdminPw 与自己的值一起使用来更改这些值。 密码必须满足 Azure SQL 密码复杂性要求,长度至少为 12 个字符,并且至少包含 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。
📝 请注意,该脚本会将当前的公共 IP 地址添加到 SQL Server 防火墙规则。
-
脚本完成后,它将返回资源组名称、SQL Server 名称和数据库名称,以及管理员用户名和密码。 记下这些值,因为稍后在实验室中需要这些值。
启用异地复制
-
如果未提供实验室虚拟机或本地计算机,请启动浏览器会话并导航到 https://portal.azure.com。 使用 Azure 凭据登录到门户。
-
在 Azure 门户中,通过搜索“sql 数据库”导航到你的数据库。
-
选择 SQL 数据库 AdventureWorksLT。
-
在数据库边栏选项卡的“数据管理”部分,选择“副本” 。
-
选择 + 创建副本。
-
在“创建 SQL 数据库 - 异地副本”页上,可以看到“项目详细信息”和“主数据库”部分已填入订阅、资源组和数据库名称。
-
对于“副本配置”部分,请选择“副本类型”的“异地副本”。
-
在“异地辅助数据库详细信息”中填写以下值:
- 订阅:<订阅名称> (与主数据库相同)。
- 资源组:<选择与主数据库相同的资源组。>
- 数据库名称:数据库名称将灰显并与主数据库名称相同。
- 服务器**:选择“新建”**。
-
在“创建 SQL Database 服务器”页上,填写以下值:
- 服务器名称:输入辅助服务器的唯一名称。 服务器名称必须在所有 Azure SQL 数据库服务器中都是唯一的。
- 位置:从主数据库选择其他区域。 请注意,订阅可能没有可用的所有区域。
- 选中“允许 Azure 服务访问服务器”复选框。 请注意,在生产环境中,可能需要限制对服务器的访问。
- 对于身份验证,请选择“SQL 身份验证”。 请注意,在生产环境中,可能需要使用“仅使用 Microsoft Entra”身份验证。 输入 *sqladmin 作为管理员登录名和安全密码。 密码必须满足 Azure SQL 密码复杂性要求,长度至少为 12 个字符,并且至少包含 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。
- 选择“确定”以创建会话。
- 想要使用弹性池吗?:否。
- 计算 + 存储:常规用途、Gen5、2 个 vCore、32 GB 存储。
- 备份存储冗余:本地冗余存储 (LRS)。 请注意,在生产环境中,可能需要使用异地冗余存储 (GRS)。
-
选择“查看 + 创建” 。
-
选择“创建”。 创建辅助服务器和数据库需要几分钟时间。 完成后,进度将从“正在进行的部署”更改为“部署完成”。
-
选择“转到资源“,导航到辅助服务器的数据库,以执行下一步。
将 SQL 数据库故障转移到次要区域
创建 Azure SQL 数据库副本后,将执行故障转移。
-
如果尚未在辅助服务器的数据库上,请在 Azure 门户中搜索“sql 数据库”,然后在辅助服务器上选择 SQL 数据库 AdventureWorksLT。
-
在 SQL 数据库主边栏选项卡的“数据管理”部分,选择“副本” 。
-
请注意,现已建立异地复制链接。 主数据库的“副本状态”值为 Online,而异地副本的“副本状态”值为 Readable。
-
选择辅助异地副本服务器的 … 菜单,然后选择“强制故障转移”。
📝 强制故障转移会将辅助数据库切换到主角色。 在此操作期间,所有会话都会断开连接。
-
出现警告消息时,单击“是”。
-
主要副本的状态将切换为“挂起”,次要副本的状态将切换为“故障转移” 。
📝 请注意,由于数据库很小,因此故障转移速度将很快。 在生产环境中,此过程可能需要几分钟时间。
-
完成后,角色将切换,次要副本会成为新的主要副本,旧的主要副本会成为次要副本。 可能需要刷新页面才能看到新的状态。
我们看到,可读辅助数据库可能位于与主数据库相同的 Azure 区域中,或者,更常见的是,位于不同的区域。 这种可读辅助数据库也称为异地辅助数据库或异地副本。
清理资源
如果不将 Azure SQL Server 用于任何其他目的,则可以清理在此实验室中创建的资源。
删除资源组
如果为此实验室创建了一个新的资源组,则可以删除资源组以移除在此实验室中创建的所有资源。
-
在 Azure 门户中,从左侧导航窗格中选择“资源组”,或在搜索栏中搜索“资源组”,并从结果中选择资源组。
-
转到为此实验室所创建的资源组。 资源组将包含在此实验室中包含的 Azure SQL 服务器和其他资源。
-
在顶部菜单中选择“删除资源组”。
-
在“删除资源组”对话框中,输入资源组的名称进行确认,然后选择“删除”。
-
等待资源组被删除。
-
关闭 Azure 门户。
仅删除实验室资源
如果未为此实验室创建新的资源组,并且想要使资源组及其以前的资源保持不变,仍可以删除在此实验室中创建的资源。
-
在 Azure 门户中,从左侧导航窗格中选择“资源组”,或在搜索栏中搜索“资源组”,并从结果中选择资源组。
-
转到为此实验室所创建的资源组。 资源组将包含在此实验室中包含的 Azure SQL 服务器和其他资源。
-
选择前面在实验室中指定的 SQL Server 名称为前缀的所有资源。
-
从顶部菜单中选择删除。
-
在“删除资源”对话框中,键入“删除”并选择“删除”。
-
再次选择“删除”,确认删除资源。
-
等待资源删除完毕。
-
关闭 Azure 门户。
删除 LabFiles 文件夹
如果为此实验室创建了一个新的 LabFiles 文件夹,并且不再需要它,则可以删除 LabFiles 文件夹以移除在此实验室中创建的所有文件。
- 如果未提供实验室虚拟机或本地计算机,请打开文件资源管理器并导航到 C:\ 驱动器。
- 右键单击 LabFiles 文件夹,然后选择“删除”。
- 选择“是”,确认删除文件夹。
你已成功完成本实验室。
现在,你了解了如何为 Azure SQL 数据库启用异地副本,以及如何使用门户手动地将其故障转移到另一个区域。