为 Azure SQL 数据库配置异地复制

在本练习中,您将学习如何为 Azure SQL 数据库启用地理复制并执行故障转移到辅助区域。 这包括创建数据库副本、为辅助数据库设置新服务器以及启动强制故障转移。 您还将学习如何检查部署状态,并了解地理辅助或地理副本在 Azure SQL 数据库管理中的作用。 最后,您将使用 Azure 门户手动将数据库故障转移到另一个区域。 本练习提供了管理和确保 Azure SQL 数据库弹性的关键方面的实践经验。

此练习大约需要 30 分钟。

注意: 要完成此练习,您需要访问 Azure 订阅以创建 Azure 资源。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户

开始之前

为完成本练习,我们将使用许多资源和工具。 让我们逐一进行详细了解:

  说明
主服务器 我们将在本实验室中设置的 Azure SQL 数据库服务器。
主数据库 在辅助服务器上创建的 AdventureWorksLT 示例数据库。
辅助服务器 我们将在本实验室中额外设置的 Azure SQL 数据库服务器。
辅助数据库 这是我们在辅助服务器上的数据库副本。
SQL Server Management Studio 下载最新的 SQL Server Management Studio 并将其安装到你选择的计算机中。

配置 Azure SQL 数据库资源

让我们分两步创建 Azure SQL 数据库资源。 首先,我们将建立主服务器和数据库。 然后,重复上述过程,用不同的名称建立辅助服务器。 这样就有了两个 Azure SQL 服务器,每个服务器都有自己的防火墙规则。 不过,只有主服务器有数据库。

  1. 导航到 Azure 门户,使用 Azure 帐户凭据登录。

  2. 选择右上角菜单栏中的 Cloud Shell 选项(看起来像 shell 提示符>_)。

  3. 一个窗格从底部滑出,要求你选择首选的 shell 类型。 选择 Bash

  4. 如果这是你第一次打开 Cloud Shell,系统会提示你创建一个存储账户(用于跨会话持久保存数据)。 按照提示创建一个。

  5. 启动外壳后,你将在 Azure 门户内看到一个命令行界面,可以在此输入脚本命令。

  6. 选择{} 打开编辑器,然后复制并粘贴下面的脚本。

    注意:运行脚本前,请记住用实际值替换脚本中的占位符值。 如果需要编辑脚本,请在 Cloud Shell 中输入 code 以使用内置文本编辑器。

     subscription="<Your subscription>"
     resourceGroup="<Your resource group>"
     location="<Your region, same as your resource group>"
     serverName="<Your SQL server name>"
     adminLogin="sqladmin"
     password="<password>"
     databaseName="AdventureWorksLT"
        
     az account set --subscription $subscription
     az sql server create --name $serverName --resource-group $resourceGroup --location $location --admin-user $adminLogin --admin-password $password
     az sql db create --resource-group $resourceGroup --server $serverName --name $databaseName --sample-name AdventureWorksLT --service-objective Basic
    
    

    此 Azure CLI 脚本会设置活动的 Azure 订阅,创建新的 Azure SQL 服务器,然后创建新的 Azure SQL 数据库,并填充 AdventureWorksLT 示例数据。

  7. 右键单击编辑器页面,然后选择保存

  8. 提供文件名。 文件扩展名应为 .ps1

  9. 在 Cloud Shell 终端上键入并执行命令。

     chmod +x <script_name>.ps1
    
    

    替换 ** 以反映您为脚本提供的名称。 该命令将更改您创建的文件的权限,使其可执行。

  10. 执行该脚本。

     ./<script_name>.ps1
    
    
  11. 该过程完成后,进入 Azure 门户并导航到 SQL 服务器页面,从而导航到新创建的 Azure SQL 服务器。

  12. 在 Azure SQL 服务器主页面,选择左侧的网络

  13. 公共访问选项卡中,选择选定的网络

  14. 防火墙规则部分中,选择 +添加客户端 IPv4 地址。 键入 IP 地址,然后选择保存

    Azure SQL 数据库防火墙规则页面截图。

    此时,你应该可以通过 SQL Management Studio 等客户端工具连接到主AdventureWorksLT数据库。

  15. 现在,让我们创建一个辅助 Azure SQL 服务器。 重复前面的步骤 (6-14),但确保使用不同的serverNamelocation服务器。 此外,通过注释跳过创建数据库的代码az sql db create命令。 这样就会在不同区域创建一个新服务器,但不包含示例数据库。

启用异地复制

现在,让我们为 Azure SQL 资源创建辅助副本。

  1. 在 Azure 门户中,通过搜索SQL 数据库导航到你的数据库。

  2. 选择 SQL 数据库 AdventureWorksLT

  3. 在 Azure SQL 数据库主页面,选择左侧数据管理下的副本

  4. 选择 + 创建副本

  5. 创建 SQL 数据库 - 异地副本页面的服务器下,选择之前创建的新辅助 SQL 服务器。

  6. 依次选择查看 + 创建创建 现在将创建辅助数据库并播种。 要检查状态,请查看 Azure 门户顶部的通知图标。

  7. 如果成功,则将从正在进行部署变为部署已成功

  8. 使用 SQL Management Studio 连接到辅助 Azure SQL 服务器。

将 SQL 数据库故障转移到辅助区域

想象一下主 Azure SQL 数据库由于区域中断而出现问题的场景。 为确保服务的连续性并尽量减少停机时间,您需要执行强制故障切换。

强制故障转移会切换主数据库和辅助数据库的角色。 辅助数据库接管主数据库,而原来的主数据库则成为辅助数据库。 这样,在解决原始主数据库的问题时,您的应用程序可以继续使用辅助副本运行。

让我们学习如何启动强制故障转移以应对区域中断。

  1. 导航到 SQL 服务器页面,然后选择辅助服务器。

  2. 在左侧的设置部分,选择 SQL 数据库

  3. 在 Azure SQL 数据库主页面,选择左侧数据管理下的副本。 地理复制链接现已建立。

  4. 选择辅助服务器的 菜单,然后选择强制故障转移

    注意:强制故障切换会将辅助数据库切换为主数据库。 在此操作期间,所有会话都会断开连接。

  5. 出现警告消息提示时,选择

  6. 主副本的状态将切换为待定,次副本的状态将切换为故障转移

    注意:此操作可能需要几分钟时间。 一旦完成,角色将发生逆转:辅助服务器将成为新的主服务器,而原来的主服务器将变成辅助服务器。

考虑一下为什么要将主服务器和辅助 SQL 服务器放置在同一区域,以及何时选择不同的区域会有好处。

现在,你了解了如何为 Azure SQL 数据库启用异地副本,以及如何使用 Azure 门户手动地将其故障转移到另一个区域。

清理

在自己的订阅中操作时,最好在项目结束时确定是否仍需要已创建的资源。

让资源不必要地运行可能会导致额外费用。 可以在 Azure 门户中单独删除资源或删除整套资源。

详细信息

有关 Azure SQL 数据库地理复制的更多信息,请参阅活动异地复制