你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 CLI 升级直接连接到 Azure Arc 的 Azure SQL 托管实例

本文介绍如何使用 Azure CLI (az) 升级在直接连接的已启用 Azure Arc 的数据控制器上部署的 Azure SQL 托管实例。

先决条件

安装工具

在继续完成本文中的任务之前,请安装:

arcdata 扩展版本与映像版本相关。 检查是否具有与版本日志中要升级到的映像版本对应的 arcdata 扩展版本。

限制

必须先将 Azure Arc 数据控制器升级到新版本,然后才能升级托管实例。

如果启用了 Active Directory 集成,则必须将 Active Directory 连接器升级到新版本,然后才能升级托管实例。

在升级数据控制器之前,托管实例必须与数据控制器和 Active Directory 连接器的版本相同。

目前没有可用的批处理升级过程。

升级托管实例

可以先执行试运行。 试运行会验证版本架构并列出将要升级的实例。 使用 --dry-run。 例如:

az sql mi-arc upgrade --resource-group <resource group> --name <instance name> --dry-run 

输出将为:

Preparing to upgrade sql sqlmi-1 in namespace arc to data controller version.
****Dry Run****1 instance(s) would be upgraded by this commandsqlmi-1 would be upgraded to <version-tag>.

常规用途

在 SQL 托管实例常规用途升级期间,将终止 Pod 并在新版本中重新配置。 这会导致在创建新 Pod 时出现短暂的停机时间。 需要在应用程序中构建复原能力,如连接重试逻辑,以确保尽量减少中断。 若要详细了解构建复原能力和 Azure 服务重试指南,请参阅可靠性支柱概述

业务关键

在具有多个副本的 SQL 托管实例业务关键升级期间:

  • 将终止次要副本 Pod 并在新版本中重新预配
  • 升级副本后,主副本会将故障转移到已升级的副本
  • 以前的主 Pod 将终止并在新版本中重新预配,然后变为次要 Pod

发生故障转移时,有一个短暂的故障时间。

升级

要升级托管实例,请使用以下命令:

az sql mi-arc upgrade --resource-group <resource group> --name <instance name> --desired-version <imageTag> [--no-wait]

示例:

az sql mi-arc upgrade --resource-group myresource-group --name sql1 --desired-version v1.6.0_2022-05-02 [--no-wait]

监视

可以使用 CLI 监视升级进度。

CLI 示例

az sql mi-arc show --resource-group <resource group> --name <instance name>

输出

该命令的输出将显示资源信息。 升级信息将显示在“状态”中。

在升级过程中,State 将显示 UpdatingRunning Version 将是当前版本:

Status:
  Log Search Dashboard:  https://30.88.222.48:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:sqlmi-1'))
  Metrics Dashboard:     https://30.88.221.32:3000/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=sqlmi-1-0
  Observed Generation:   2
  Primary Endpoint:      30.76.129.38,1433
  Ready Replicas:        1/1
  Running Version:       v1.5.0_2022-04-05
  State:                 Updating

升级完成后,State 将显示 ReadyRunning Version 将是新版本:

Status:
  Log Search Dashboard:  https://30.88.222.48:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:sqlmi-1'))
  Metrics Dashboard:     https://30.88.221.32:3000/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=sqlmi-1-0
  Observed Generation:   2
  Primary Endpoint:      30.76.129.38,1433
  Ready Replicas:        1/1
  Running Version:       v1.6.0_2022-05-02
  State:                 Ready

疑难解答

当所需版本设置为特定版本时,引导程序作业将尝试升级到该版本,直到它成功为止。 如果升级成功,则规范的 RunningVersion 属性将更新为新版本。 对于映像标记不正确、无法连接到注册表或存储库、分配给容器的 CPU 或内存不足或存储不足等情况,升级可能会失败。

  1. 运行以下命令,查看是否有任何 Pod 显示 Error 状态或具有较高重启次数:

    kubectl get pods --namespace <namespace>
    
  2. 若要查看事件以了解是否存在错误,请运行

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. 若要获取 Pod 中的容器列表,请运行

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. 若要获取容器的日志,请运行

    kubectl logs <pod name> <container name> --namespace <namespace>
    

若要查看常见错误以及如何对其进行故障排除,请转到对资源进行故障排除