인스턴스 이동

이 페이지에서는 Spanner의 인스턴스를 이동하는 방법을 설명합니다.

Spanner 인스턴스를 모든 인스턴스 구성에서 리전 구성, 이중 리전 구성, 멀티 리전 구성을 포함한 다른 인스턴스 구성으로 이동할 수 있습니다. 인스턴스를 이동해도 다운타임이 발생하지 않으며 Spanner는 이동 중에 strong consistency를 포함한 일반적인 트랜잭션 보장을 계속 제공합니다.

인스턴스를 소스 인스턴스 구성에서 커스텀 인스턴스 구성으로 이동할 수도 있습니다(예: us-west2 읽기 전용 복제본이 있는 nam3 기본 구성). 기존 인스턴스 구성의 토폴로지를 업데이트할 수 없으므로 먼저 원하는 토폴로지가 있는 새 커스텀 인스턴스 구성을 만들어야 합니다. 새 커스텀 인스턴스 구성을 만든 후에는 소스 인스턴스 구성에서 새 커스텀 인스턴스 구성으로 인스턴스를 이동할 수 있습니다.

Spanner 인스턴스를 이동하는 이유

인스턴스를 이전하면 다음과 같은 이점이 있습니다.

  • 가용성 향상: 리전에서 이중 리전 또는 멀티 리전으로 이동을 수행한 후 다운타임 없이 99.999%의 가용성을 확보합니다.
  • 지연 시간 감소: 리전에서 이중 리전 또는 멀티 리전으로 또는 멀티 리전에서 멀티 리전으로 이동을 통해 추가 읽기 전용 복제본으로 지연 시간을 줄이고 지리적 범위를 확장합니다.
  • 비용 절감: 이중 리전 또는 멀티 리전 구성에서 리전 구성으로 전환하여 시간당 비용을 줄입니다.
  • 데이터베이스 같은 위치에 배치: 인스턴스를 보다 최적화된 위치로 이동하여 Spanner 애플리케이션을 클라이언트 애플리케이션과 같은 위치에 배치합니다.

가격 책정

인스턴스를 이동하면 소스 및 대상 인스턴스 구성에 시간당 컴퓨팅 및 스토리지 요금이 적용됩니다. 이동이 완료되면 대상 구성에서 인스턴스 스토리지에 대한 요금이 청구됩니다.

인스턴스를 새 리전, 이중 리전 또는 멀티 리전 인스턴스 구성으로 이동할 경우 아웃바운드 데이터 전송 요금이 부과될 수 있습니다. 자세한 내용은 Spanner 가격 책정을 참조하세요.

제한사항

  • 인스턴스를 이동하려면 최소 1개의 노드(1,000개의 처리 단위)가 있어야 합니다.
  • 프로젝트와 Google Cloud 계정 간에 인스턴스를 이동할 수 없습니다.
  • Standard 버전을 사용하는 인스턴스를 리전 인스턴스 구성에서 이중 리전 또는 멀티 리전 인스턴스 구성으로 직접 이동할 수는 없습니다. 먼저 인스턴스의 버전을 업그레이드하여 Enterprise Plus 버전으로 만든 다음 인스턴스를 이동해야 합니다.
  • Spanner 무료 체험판 인스턴스는 이동할 수 없습니다. 유료 인스턴스로 업그레이드한 후에 인스턴스를 이동할 수 있습니다.
  • 인스턴스 리소스에서 리전 서비스 엔드포인트를 사용하는 활성 요청이 있는 경우 리전 시행에서 리전 간 인스턴스에 대한 액세스를 차단하므로 인스턴스를 이동하면 리전 엔드포인트를 사용하는 모든 요청에 영향을 미칩니다. 전역 엔드포인트를 사용하는 요청은 영향을 받지 않습니다.
  • Spanner 백업은 인스턴스 구성에 따라 다르며 인스턴스를 이동할 때 포함되지 않습니다. 자세한 내용은 백업을 참조하세요.
  • 인스턴스 이동 중에 다음 API는 사용 중지됩니다.
    • InstanceAdmin.DeleteInstance
    • InstanceAdmin.UpdateInstance
    • DatabaseAdmin.CreateDatabase
    • DatabaseAdmin.UpdateDatabaseDdl(요청에 default_leader가 지정된 경우 사용 중지됨)
    • DatabaseAdmin.RestoreDatabase
    • DatabaseAdmin.CreateBackup
    • DatabaseAdmin.CreateBackupSchedule
    • DatabaseAdmin.CopyBackup
  • CMEK가 사용 설정된 데이터베이스가 포함된 인스턴스는 이동할 수 없습니다.
  • 데이터베이스에 수정된 기본 리더가 있는 경우 대상 인스턴스 구성에서 읽기-쓰기 리전의 이름을 지정하고 해당 구성이 멀티 리전인 경우 선택이 유지됩니다. 대상 구성이 리전이거나 명명된 읽기-쓰기 리전이 없으면 기본 리더 선택이 삭제됩니다.
  • 인스턴스를 이동하면 인스턴스의 인스턴스 구성 속성이 변경됩니다. 자동화를 통해 Spanner 리소스를 관리하는 경우 발생할 수 있는 모든 불일치에 대비하고 해결해야 합니다.
    • 예를 들어 Terraform을 사용하여 Spanner 인스턴스와 데이터베이스를 관리하고 terraform apply --auto-approve를 사용 설정하여 리소스를 동기화 상태로 유지하면 인스턴스를 이동할 때 모든 인스턴스와 하위 리소스가 삭제됩니다. 구성을 업데이트하여 삭제 및 데이터 손실을 방지합니다. apply 명령어에 대한 자세한 내용은 Terraform 적용 옵션을 참조하세요.
  • 인스턴스가 이동되는 동안 Spanner 모니터링 측정항목과 차트가 소스 및 대상 인스턴스 구성 모두에 데이터를 표시하거나 하나의 인스턴스 구성에 있는 성능만 반영할 수 있습니다.
  • 오픈소스 자동 확장 처리 도구를 구성한 경우 사용 중지할 필요가 없습니다. InstanceAdmin.UpdateInstance(노드 및 처리 단위 변경에 사용됨)가 사용 중지되었기 때문에 실패합니다.
  • Spanner 관리형 자동 확장 처리 기능이 사용 설정된 경우 인스턴스를 이동할 수 없습니다. 인스턴스를 이동하려면 관리형 자동 확장 처리를 사용 중지하고 인스턴스를 이동한 다음 관리형 자동 확장 처리를 다시 사용 설정해야 합니다.

    또한 자동 확장을 사용하는 경우 언급된 최대 권장사항에 따라 최대 CPU 사용량에 맞게 노드를 충분히 프로비저닝한 후 인스턴스를 이동하기 전에 자동 확장을 중지해야 합니다.

성능에 대한 고려사항

인스턴스가 이동 중일 때에는 읽기-쓰기 지연 시간이 길어지고 트랜잭션 취소율이 높아집니다. 인스턴스 이동은 사용자가 프로비저닝한 예비 CPU를 사용하여 수행되므로 이동 중에 CPU 사용률이 최대 100%까지 증가할 수 있습니다. 그러나 인스턴스를 이동해도 다운타임이 발생하지 않습니다. 인스턴스 이동에 걸리는 시간은 데이터베이스 크기, 노드 수, 이동 종류(예: 리전에서 멀티 리전으로 이동)를 비롯한 다양한 요소에 따라 달라집니다.

인스턴스를 이동한 후 인스턴스 구성의 세부 사항에 따라 인스턴스의 성능이 달라집니다. 예를 들어 이중 리전멀티 리전 구성은 일반적으로 리전 구성보다 쓰기 지연 시간이 더 길고 읽기 지연 시간이 더 짧습니다.

백업

인스턴스를 이동할 때 소스 인스턴스의 백업은 새로운 대상 구성으로 자동으로 이동되지 않습니다. 인스턴스 이동을 시작할 때 소스 인스턴스 구성에 백업이 있으면 인스턴스 이동이 취소됩니다. 인스턴스를 이동하기 전에 백업을 복사하고 데이터 복구 계획을 고려하는 것이 중요합니다.

소스 인스턴스에 유지해야 하는 백업이 있는 경우 대상 인스턴스 구성과 이동할 소스 인스턴스와 동일한 인스턴스 구성의 다른 인스턴스에 백업을 복사하는 것이 좋습니다. 이는 다음을 위함입니다.

  • 인스턴스 이동이 완료된 직후 백업을 대상 인스턴스 구성에 복사할 수 있습니다.
  • 인스턴스 이동을 취소해야 하는 경우 소스 인스턴스 구성과 동일한 구성을 사용하여 인스턴스에서 백업을 빠르게 복원할 수도 있습니다.

백업을 다른 인스턴스에 복사한 후에는 소스 인스턴스에서 기존 백업을 삭제해야 인스턴스를 이동할 수 있습니다. 그런 다음 인스턴스 이동이 완료되면 대상 구성에 이미 백업 복사본이 생성됩니다. 새 백업을 만들 수도 있습니다.

백업 복사 및 관련 비용에 대한 자세한 내용은 백업 복사를 참조하세요.

인스턴스 이동 방법

gcloud 명령어를 사용하여 Google Cloud 콘솔 Cloud Shell 및 gcloud CLI로 인스턴스를 이동할 수 있습니다.

기본 요건

인스턴스 구성을 이동하기 전에 제한사항성능 고려사항 섹션을 읽었는지 확인합니다. 이어서 다음 단계를 수행합니다.

  1. 소스 인스턴스에 대해 spanner.instances.update IAM 권한이 있는지 확인합니다.
  2. 해당하는 경우 프로덕션 인스턴스를 이동하기 전에 비프로덕션 인스턴스(예: 테스트 및 스테이징)를 이동하여 인스턴스 이동 중에 워크로드에 미치는 성능 영향을 평가하고 파악할 수 있게 도와줍니다.
  3. Spanner 인스턴스를 이동하면 Data Catalog에서 만든 인스턴스 태그가 이동 프로세스에서 삭제됩니다. 태그를 보존하려면 이동 전에 태그를 내보내고 이동 후에 태그를 가져와야 합니다. 자세한 내용은 태그 내보내기 및 가져오기를 참조하세요.

권장사항의 경우 다음 가이드라인도 준수해야 합니다.

  • 프로덕션 인스턴스를 이동하기 전에 대상 인스턴스 구성의 비프로덕션 인스턴스에서 성능 워크로드를 테스트합니다. 프로덕션 인스턴스를 이동하는 데 걸리는 시간을 확인하기 위해 프로덕션 인스턴스와 유사한 스테이징 인스턴스를 이동할 수 있습니다.
  • Key Visualizer를 사용하여 데이터베이스에 핫스팟이 없는지 확인합니다.
  • 대상 노드 구성에 예상되는 최대 인스턴스 사용량을 지원하기에 충분한 노드 할당량이 있는지 확인합니다. 자세한 내용은 Spanner 할당량 및 한도를 참조하세요.
  • 이동한 인스턴스 구성에서 인스턴스의 최대 CPU 사용률이 40% 미만이고 노드당 스토리지 양이 1테비바이트(TiB) 미만인지 확인합니다.
  • 이동 중에 인스턴스를 변경하지 마세요. 여기에는 인스턴스 노드 수 변경, 데이터베이스 스키마 변경, 데이터베이스 만들기 또는 삭제, 백업 만들기 또는 삭제가 포함됩니다.

이러한 권장사항에 따라 인스턴스를 이동하면 일반적으로 24시간 이내에 이동이 완료됩니다. 하지만 애플리케이션 워크로드에 따라 완료 시간이 더 길거나 짧아질 수 있습니다.

인스턴스 이동

Google Cloud 콘솔

  1. Google Cloud 콘솔 상단에서 Cloud Shell 활성화 아이콘 Cloud Shell 활성화를 클릭합니다.

    Google Cloud 콘솔 하단의 새 프레임에서 Cloud Shell 세션이 열리고 명령줄 프롬프트가 표시됩니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. gcloud spanner instances move 명령어를 사용하여 인스턴스를 이동합니다.

    gcloud spanner instances move INSTANCE_ID \
    --target-config=TARGET_CONFIG
    

    다음을 바꿉니다.

    • INSTANCE_ID: 이동할 인스턴스의 영구 식별자입니다.
    • TARGET_CONFIG: 인스턴스를 이동할 인스턴스 구성의 영구 식별자입니다. 인스턴스의 새로운 지리적 위치입니다. 리전, 이중 리전, 멀티 리전 또는 커스텀 인스턴스 구성일 수 있습니다(예: nam3, us-central1 또는 custom-nam3-us-west2).

예를 들어 test-instance 인스턴스를 현재 인스턴스 구성에서 nam3으로 이동하려면 다음을 실행합니다.

  gcloud spanner instances move test-instance --target-config=nam3

선택사항: 읽기 전용 복제본 us-west2를 기본 인스턴스 구성 nam3에 추가하려면 다음을 실행합니다.

  1. 기본 구성을 클론하고 읽기 전용 복제본을 추가합니다.

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. test-instance 인스턴스를 현재 인스턴스 구성에서 이 새로운 custom-nam3-us-west2 인스턴스 구성으로 이동합니다.

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

gcloud CLI

gcloud spanner instances move 명령어를 사용하여 인스턴스를 이동합니다.

gcloud spanner instances move INSTANCE_ID \
--target-config=TARGET_CONFIG

다음을 바꿉니다.

  • INSTANCE_ID: 이동할 인스턴스의 영구 식별자입니다.
  • TARGET_CONFIG: 인스턴스를 이동할 인스턴스 구성의 영구 식별자입니다. 인스턴스의 새로운 지리적 위치입니다. 리전, 이중 리전 또는 멀티 리전 인스턴스 구성일 수 있습니다(예: nam3, us-central1 또는 custom-nam3-us-west2).

예를 들어 test-instance 인스턴스를 현재 인스턴스 구성에서 nam3으로 이동하려면 다음을 실행합니다.

  gcloud spanner instances move test-instance --target-config=nam3

선택사항: 읽기 전용 복제본 us-west2를 기본 인스턴스 구성 nam3에 추가하려면 다음을 실행합니다.

  1. 기본 구성을 클론하고 읽기 전용 복제본을 추가합니다.

    gcloud spanner instance-configs create custom-nam3-us-west2 \
    --clone-config=nam3 --add-replicas=location=us-west2, type=READ_ONLY
    
  2. test-instance 인스턴스를 현재 인스턴스 구성에서 이 새로운 custom-nam3-us-west2 인스턴스 구성으로 이동합니다.

    gcloud spanner instances move test-instance --target-config=custom-nam3-us-west2
    

인스턴스 이동 및 취소 진행 상황을 모니터링하는 방법

gcloud spanner operations describe를 사용하거나 커스텀 Cloud Monitoring 대시보드를 만들어 인스턴스 이동 진행 상황을 모니터링할 수 있습니다.

이동 및 취소 작업 진행 상황 보기

인스턴스 이동 또는 인스턴스 이동 취소 작업의 진행 상황을 추적하려면 gcloud spanner operations describe 명령어를 사용합니다. 이 명령어를 사용하려면 진행 중인 인스턴스 이동 작업의 작업 ID가 필요합니다.

  1. 다음을 실행하여 인스턴스 이동 작업의 작업 ID를 가져옵니다.

    gcloud spanner operations list --instance="INSTANCE_ID"
    

    다음을 바꿉니다.

    • INSTANCE_ID: 이동할 인스턴스의 영구 식별자입니다.

    인스턴스 이동 작업을 비롯한 장기 실행 작업 목록이 출력에 표시됩니다.

  2. gcloud spanner operations describe 명령어를 실행하여 진행 상황 백분율과 상태를 확인합니다.

    gcloud spanner operations describe OPERATION_ID --instance=INSTANCE_ID
    

    다음을 바꿉니다.

    • OPERATION_ID: 확인할 인스턴스 이동 작업의 작업 ID입니다.
    • INSTANCE_ID: 확인할 인스턴스의 인스턴스 ID입니다.

인스턴스 이동 작업 모니터링

커스텀 Cloud Monitoring 대시보드를 만들어 잠재적인 서비스 영향이 있는 장기 실행 작업인 인스턴스 이동 중에 측정항목을 표시하고 모니터링할 수 있습니다.

대시보드의 총 스토리지데이터베이스별 총 데이터베이스 스토리지 그래프는 이동 진행 상황을 모니터링하는 데 유용합니다. 대상 구성의 스토리지가 증가하는 동안 소스 구성의 스토리지가 점진적으로 감소하는 것을 볼 수 있습니다.

Google Cloud 콘솔

  1. move-instance-dashboard.json 파일을 다운로드합니다. 이 파일에는 Monitoring에서 커스텀 대시보드를 채우는 데 필요한 정보가 있습니다.
  2. Google Cloud 콘솔에서  대시보드 페이지로 이동합니다.

    대시보드로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

  3. 대시보드 개요 페이지에서 대시보드 만들기를 클릭합니다.
  4. 대시보드 툴바에서 대시보드 설정 드롭다운을 클릭합니다. JSON, JSON 편집기를 차례로 선택합니다.
  5. JSON 편집기 창에서 다운로드한 move-instance-dashboard.json 파일의 콘텐츠를 복사하고 편집기에 붙여넣습니다.
  6. 대시보드에 변경사항을 적용하려면 변경사항 적용을 클릭합니다. 이 대시보드를 사용하지 않으려면 대시보드 개요 페이지로 돌아가세요.
  7. 대시보드가 생성된 후 필터 추가를 클릭합니다. 그런 다음 project_id 또는 instance_id를 선택하여 인스턴스 이동 진행 상황을 모니터링합니다.

gcloud CLI

  1. move-instance-dashboard.json 파일을 다운로드합니다. 이 파일에는 Monitoring에서 커스텀 대시보드를 채우는 데 필요한 정보가 있습니다.
  2. 프로젝트에서 대시보드를 만들려면 gcloud monitoring dashboards create 명령어를 실행합니다.

    gcloud monitoring dashboards create --config-from-file=move-instance-dashboard.json
    

    자세한 내용은 gcloud monitoring dashboards create 참조를 확인하세요.

인스턴스 이동 취소 방법

진행 중인 인스턴스 이동만 취소할 수 있습니다. 이미 완료된 인스턴스 이동을 되돌리려면 새로 시작해야 합니다.

gcloud spanner operations cancel을 사용하면 인스턴스 이동 작업을 취소할 수 있습니다. 취소는 즉시 처리되지 않으며 이동 시작 이후 경과된 시간과 대략 동일한 시간이 걸립니다. 데이터를 소스 인스턴스 구성으로 다시 이동해야 하기 때문입니다.

이 명령어를 사용하려면 진행 중인 인스턴스 이동 작업의 작업 ID가 필요합니다.

  1. 다음을 실행하여 작업 ID를 가져옵니다.

    gcloud spanner operations list --type=INSTANCE --instance="INSTANCE_ID"
    --filter="done:False AND metadata.@type:MoveInstanceMetadata
    

    다음을 바꿉니다.

    • INSTANCE_ID: 이동할 인스턴스의 영구 식별자입니다.

    진행 중인 인스턴스 이동 작업 목록이 출력에 표시됩니다.

  2. gcloud spanner operations cancel 명령어를 실행하여 인스턴스 이동을 취소합니다.

    gcloud spanner operations cancel OPERATION_ID
    

    다음을 바꿉니다.

    • OPERATION_ID: 취소할 인스턴스 이동 작업의 작업 ID입니다.

다음 단계