CLI를 사용하여 Azure Arc에 직접 연결된 Azure SQL Managed Instance 업그레이드

이 문서에서는 Azure CLI(az)를 사용하여 직접 연결된 Azure Arc 지원 데이터 컨트롤러에 배포된 Azure SQL Managed Instance 업그레이드하는 방법을 설명합니다.

필수 조건

도구 설치

이 문서의 작업을 진행하려면 다음을 설치합니다.

arcdata 확장 버전과 이미지 버전은 관련되어 있습니다. 버전 로그에서 업그레이드하려는 이미지 버전에 해당하는, 올바른 arcdata 확장 버전이 있는지 확인합니다.

제한 사항

Managed Instance를 업그레이드하려면 먼저 Azure Arc 데이터 컨트롤러를 새 버전으로 업그레이드해야 합니다.

Active Directory 통합이 사용하도록 설정된 경우 관리되는 인스턴스를 업그레이드하려면 먼저 Active Directory 커넥터를 새 버전으로 업그레이드해야 합니다.

관리되는 인스턴스는 데이터 컨트롤러가 업그레이드되기 전에 데이터 컨트롤러 및 Active Directory 커넥터와 동일한 버전이어야 합니다.

현재 사용 가능한 일괄 처리 업그레이드 프로세스가 없습니다.

Managed Instance 업그레이드

먼저 시험 실행을 수행할 수 있습니다. 시험 실행은 버전 스키마의 유효성을 검사하고 업그레이드할 인스턴스를 나열합니다. --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 Managed Instance 범용 업그레이드 중에 Pod가 종료되고 새 버전에서 다시 프로비전됩니다. 이로 인해 새 Pod가 만들어질 때 짧은 가동 중지 시간이 발생합니다. 중단을 최소화하려면 연결 재시도 논리와 같은 복원력을 애플리케이션에 빌드해야 합니다. 복원력 설계 및 Azure Services에 대한 재시도 지침에 대한 자세한 내용은 안정성 핵심 요소 개요를 참조하세요.

중요 비즈니스용

복제본이 두 개 이상인 SQL Managed Instance 중요 비즈니스용 업그레이드 중:

  • 보조 복제본 Pod가 종료되고 새 버전에서 다시 프로비전됩니다.
  • 복제본이 업그레이드된 후 기본은 업그레이드된 복제본으로 장애 조치(failover)됩니다.
  • 이전 기본 Pod는 종료되고 새 버전에서 다시 프로비전되며 보조 Pod가 됩니다.

장애 조치(failover)가 발생할 때 짧은 가동 중지 시간이 있습니다.

업그레이드

Managed Instance를 업그레이드하려면 다음 명령을 사용합니다.

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]

Monitor

CLI를 사용하여 업그레이드의 진행률을 모니터링할 수 있습니다.

CLI 예

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

출력

명령에 대한 출력은 리소스 정보를 표시합니다. 업그레이드 정보는 상태가 됩니다.

업그레이드하는 동안 StateUpdating을 표시하고 Running 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

업그레이드가 완료되면 StateReady를 표시하고 Running 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>
    

일반적인 오류와 문제 해결 방법을 보려면 문제 해결 리소스로 이동합니다.