고급 재해 복구(DR) 사용

이 페이지에서는 고급 재해 복구(DR)를 사용하는 방법을 설명합니다. 고급 DR은 두 가지 기본 기능을 제공합니다.

  • 복제본 장애 조치 기능을 사용하면 리전 장애가 발생했을 때 즉시 기본 인스턴스를 DR 복제본으로 장애 조치할 수 있습니다. SQL 서버용 Cloud SQL의 경우 DR 복제본은 연쇄 가능한 복제본입니다.
  • 전환 기능을 사용하면 데이터 손실 없이 기본 인스턴스와 DR 복제본의 역할을 반대로 전환할 수 있습니다. 전환을 사용해서 복제본 장애 조치 후 배포를 원래 배포 상태로 복원하거나 전환을 사용해서 DR을 테스트할 수 있습니다.

고급 DR은 Cloud SQL Enterprise Plus 버전 인스턴스에서만 지원됩니다.

시작하기 전에

Google Cloud SDK를 사용하려는 경우 버전 470.0.0 이상 및 gcloud beta 명령어를 사용해야 합니다. Google Cloud SDK 버전을 확인하려면 gcloud --version을 실행합니다. Google Cloud SDK를 업데이트하려면 gcloud components update를 실행합니다.

Google Cloud SDK를 설치하려면 gcloud CLI 설치를 참조하세요.

DR 복제본 만들기

고급 DR을 사용하기 전에 기본 인스턴스와 다른 리전에 기본 인스턴스의 연쇄 가능한 복제본을 만듭니다.

전환 수행

DR 복제본을 만든 후 전환 작업을 수행할 수 있습니다. 하지만 권장사항에 따라 다음 상황에서는 전환 작업을 수행하지 않는 것이 좋습니다.

  • 기본 인스턴스가 계속 사용되는 중입니다.
  • 자동화된 백업 또는 고가용성(HA) 사용 설정 또는 중지와 같은 관리자 작업을 진행하는 중입니다.

시간 초과를 방지하기 위해 트랜잭션 볼륨이 낮을 때 전환을 수행하는 것이 좋습니다.

전환이 완료되면 새 기본 인스턴스가 승격되는 즉시 새 기본 인스턴스(이전 DR 복제본)의 백업이 수행됩니다. 이 백업이 완료되면 PITR(point-in-time-recovery)이 새 기본 인스턴스에서 완전히 사용 설정됩니다. 디스크 크기에 따라 이 백업 작업은 완료하는 데 5~15분 정도 걸립니다. PITR 적용 범위는 이 백업이 완료된 후에만 시작됩니다. 고급 DR에서 PITR 사용 시 고려할 사항은 고급 DR에 PITR 사용을 참조하세요.

전환 작업이 완료된 후 복제 방향이 바뀐 것을 알 수 있습니다.

시작하기 전에

전환 작업을 수행하려면 먼저 다음을 수행합니다.

  • 아직 수행하지 않았으면 DR 복제본을 만듭니다.
  • 기본 인스턴스와 DR 복제본이 온라인 상태인지 확인합니다.
  • 기본 인스턴스의 주문형 백업을 수행합니다. 이 백업은 예기치 않은 오류로부터 복구가 필요한 경우에 대비한 예방책입니다.

전환 작업 수행

콘솔

전환 작업을 수행하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. DR 복제본 인스턴스를 클릭합니다. DR 복제본의 개요 페이지가 표시됩니다.
  3. 전환 버튼을 클릭합니다.
  4. 기본 인스턴스와 DR 복제본 간 전환 수행 페이지에서 인스턴스 ID 필드에 기본 인스턴스의 이름을 입력합니다.
  5. 전환을 클릭합니다.

gcloud

전환 작업을 수행하기 위해 다음 명령어를 실행합니다.

gcloud beta sql instances switchover REPLICA_NAME

다음 변수를 바꿉니다.

  • REPLICA_NAME: 기본 인스턴스가 역할을 전환하도록 지정된 DR 복제본의 이름입니다.

REST v1

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • REPLICA_NAME: DR 복제본의 이름입니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME/switchover

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

REST v1beta4

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • REPLICA_NAME: DR 복제본의 이름입니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_NAME/switchover

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

복제본 장애 조치를 호출하여 DR 수행

리전 장애 또는 재해 발생 시 지정된 DR 복제본에 대해 복제본 장애 조치 작업을 호출하여 DR을 수행할 수 있습니다. 복제본 장애 조치를 수행하기 위해 DR 복제본을 승격합니다. 전환과 달리 DR 복제본 승격이 즉시 수행됩니다.

DR 복제본은 기본 인스턴스 역할을 즉시 수행하기 때문에 복제 지연으로 인해 이전 기본 인스턴스의 모든 데이터가 복제본에 포함되지 않을 수 있습니다. 따라서 복제본 장애 조치 시 데이터 손실이 발생할 수 있습니다.

승격 프로세스에 따라 복제본 장애 조치는 DR 복제본이 새로운 기본 인스턴스로 전환되고 나서 바로 새 기본 인스턴스(이전의 DR 복제본)에 대해 백업을 수행합니다. 이 백업이 완료되면 PITR(point-in-time-recovery)이 새 기본 인스턴스에서 완전히 사용 설정됩니다. 이 백업은 새로운(그리고 이전의) 기본 인스턴스의 디스크 크기에 따라 완료하는 데 5~15분 정도 걸립니다. 이러한 백업 기간 중에는 PITR을 사용할 수 없습니다.

이전 기본 인스턴스가 온라인으로 다시 전환되면 복제본 장애 조치 프로세스가 백업을 수행합니다. 이 백업이 수행된 후 이전 기본 인스턴스가 새 기본 인스턴스의 읽기 복제본으로 다시 생성됩니다. 이 프로세스에서 이전 기본 인스턴스에서는 Cloud Storage에 저장되지 않은 이전의 PITR 트랜잭션 로그가 손실됩니다. 따라서 복제본 장애 조치 시 이전 기본 인스턴스에서 PITR에 사용된 모든 트랜잭션 로그는 보존이 보장되지 않습니다.

고급 DR에서 PITR 사용 시 고려할 사항은 고급 DR에 PITR 사용을 참조하세요.

시작하기 전에

복제본 장애 조치를 수행하려면 먼저 다음을 수행합니다.

복제본 장애 조치 작업 수행

콘솔

복제본 장애 조치 작업을 수행하려면 먼저 다음을 수행합니다.

  1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. DR 복제본 인스턴스를 클릭합니다. DR 복제본의 개요 페이지가 표시됩니다.
  3. 복제본 장애 조치 버튼을 클릭합니다.
  4. 기본 및 DR 복제본 간에 복제본 장애 조치 수행 페이지에서 인스턴스 ID 필드에 기본 인스턴스의 이름을 입력하여 작업을 계속할지 확인합니다.
  5. 복제본 장애 조치를 시작하려면 복제본 장애 조치를 클릭합니다.

gcloud

DR 복제본에 복제본 장애 조치를 호출하려면 다음 명령어를 사용합니다.

gcloud sql instances promote-replica \
   REPLICA_NAME --failover

다음 변수를 바꿉니다.

  • REPLICA_NAME: DR 복제본의 이름입니다.

REST v1

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • REPLICA_NAME: DR 복제본의 이름입니다.
  • ENABLE_REPLICA_FAILOVER: 복제본 장애 조치를 사용하려면 true로 설정합니다. false로 설정하면 API가 복제본 장애 조치 없이 일반 promoteReplica 메서드를 사용합니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME/promoteReplica?failover=ENABLE_REPLICA_FAILOVER

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

REST v1beta4

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • REPLICA_NAME: DR 복제본의 이름입니다.
  • ENABLE_REPLICA_FAILOVER: 복제본 장애 조치를 사용하려면 true로 설정합니다. false로 설정하면 API가 복제본 장애 조치 없이 일반 promoteReplica 메서드를 사용합니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/REPLICA_NAME/promoteReplica?failover=ENABLE_REPLICA_FAILOVER

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

복제본 장애 조치 상태 확인

복제본 장애 조치는 두 단계로 진행됩니다. 첫 번째 단계에서는 DR 복제본을 승격합니다. 두 번째 단계에서는 이전 기본 인스턴스를 읽기 복제본으로 다시 만듭니다.

복제본 장애 조치 상태를 확인하기 위해 각 단계의 상태를 확인합니다.

  1. 첫 번째 단계의 상태를 확인합니다.

    콘솔

    DR 복제본이 독립형 인스턴스로 승격되었는지 확인하려면 다음을 수행합니다.

    1. Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.

      Cloud SQL 인스턴스로 이동

    2. 승격된 DR 복제본의 이름을 찾습니다.
    3. 새 기본 인스턴스의 유형 열에 SQL Server VERSION이 표시되는지 확인합니다.

    gcloud

    다음 명령어를 실행하여 상태를 확인할 수 있습니다.

    gcloud sql instances describe DR_REPLICA_NAME

    다음 변수를 바꿉니다.

    • DR_REPLICA_NAME: 승격된 DR 복제본의 이름입니다.

    출력에서 다음 필드가 표시되었고 복제본이 독립형 Cloud SQL 기본 인스턴스로 전환되었는지 확인합니다.

    instanceType: CLOUD_SQL_INSTANCE
    

  2. 두 번째 단계가 완료되었는지 확인하기 위해 인스턴스의 작업 로그에서 RECONFIGURE_OLD_PRIMARY 메시지를 확인합니다.

    이 메시지의 형태는 재해 발생 시 몇 분 또는 며칠까지 걸릴 수 있는 이전 기본 인스턴스가 온라인으로 전환된 시간에 따라 달라집니다.

    인스턴스에서 작업 로그를 확인하는 방법은 인스턴스 로그 보기를 참조하세요.

고급 DR에 PITR 사용

전환 및 복제본 장애 조치 모두 DR 복제본이 기본 인스턴스로 승격되는 즉시 백업 및 PITR을 지원하도록 다음 변경사항이 수행됩니다.

  • 자동 백업 일정을 포함하여 백업 구성이 이전 기본 인스턴스에서 새로운 기본 인스턴스로 복사됩니다.
  • 사용 중지된 경우 PITR을 사용 설정하도록 binlog 구성 플래그가 켜집니다.
  • 새 기본 인스턴스에서 PITR을 지원하도록 새 백업이 수행됩니다.
  • 트랜잭션 로그 보관 정책이 이전 기본 인스턴스에서 새 기본 인스턴스로 복사됩니다.

백업 구성 및 트랜잭션 로그 보관 정책 모두 이전 기본 인스턴스에서 상속된 설정이 새 기본 인스턴스에 대해 올바른지 확인하는 것이 좋습니다.

PITR 적용 범위 시작

전환 작업이 끝나면 Cloud SQL이 자동 백업을 예약하고 새 기본 인스턴스의 첫 번째 백업을 수행합니다. PITR 적용 범위 시작 시간을 조정하려면 첫 번째 백업이 성공했는지 확인하는 것이 좋습니다. 새로 승격된 기본 인스턴스에서 PITR 적용 범위는 첫 번째 자동 백업이 성공적으로 완료된 후에만 시작됩니다.

인스턴스에 사용할 수 있는 백업을 보는 방법은 백업 목록 보기를 참조하세요.

전환 및 복제본 장애 조치 중 인스턴스의 PITR 적용 범위

인스턴스가 전환 또는 복제본 장애 조치 작업에 참여할 때 인스턴스는 읽기 복제본으로 시간을 보냅니다. 인스턴스가 읽기 복제본으로 시간을 보내는 기간 중에는 PITR 및 백업 복원이 지원됩니다. 전환 이벤트가 발생하기 전에 특정 시점(인스턴스가 기본 인스턴스였을 때)으로 PITR을 수행하려면 클론 명령어를 실행하여 인스턴스가 기본 인스턴스였던 시점을 대상으로 하면 됩니다. 인스턴스가 읽기 복제본이었던 시점에 PITR을 요청할 수 없습니다.

기본 인스턴스가 원하는 시간에 읽기 복제본이었기 때문에 PITR을 수행할 수 없는 경우에는 관심 시간에 작동하는 기본 인스턴스였던 인스턴스에서 PITR 요청을 시도해야 합니다.

마찬가지로 복제본이 기본 인스턴스였던 시점에 수행된 백업을 복원할 수 있습니다. 인스턴스가 복제본이면 복원 명령어는 다른 독립형 인스턴스를 대상으로 해야 하며 복제본 자체로 복원할 수 없습니다.

PITR 요청에 사용할 인스턴스를 결정하려면 작업 목록을 사용합니다. 인스턴스의 작업 목록은 인스턴스에 전환 또는 복제본 장애 조치 작업이 수행된 시간을 확인하는 데 도움이 됩니다.

복제본 장애 조치 중 분할 브레인

복제본 장애 조치를 사용하여 복제본이 승격되는 동안 기본 인스턴스가 계속 쓰기를 수락하면 분할 브레인이 발생할 수 있습니다. 복제본이 승격된 후 이전 기본 인스턴스를 다시 사용할 수 있게 되면 승격된 인스턴스의 복제본으로 다시 빌드되고 최종 백업이 생성됩니다. 이 백업은 승격된 복제본에 작성되지 않은 모든 분할 브레인 데이터를 복구하는 데 사용할 수 있습니다.

복제본에서 백업 및 트랜잭션 로그 삭제

이전에 PITR 및 백업으로 사용 설정된 기본 인스턴스가 읽기 복제본으로 변환된 경우 기본 인스턴스 시절의 마지막 백업 및 PITR 보관 정책은 복제본으로 사용되는 동안에도 유지 및 적용됩니다. 새 기본 인스턴스가 백업을 수행하지 않더라도 PITR에 사용되는 이전 백업 및 트랜잭션 로그는 마지막으로 구성된 정책에 따라 읽기 복제본에서 삭제됩니다.

예를 들어 인스턴스가 일일 자동 백업을 수행하고 7일 분의 PITR 로그 백업을 7개 유지하도록 구성된 경우 이 인스턴스가 읽기 복제본이 되었을 때 7일보다 오래된 백업이 하루에 한 번 삭제됩니다.

백업을 더 빨리 삭제해야 할 경우에는 백업을 수동으로 삭제할 수 있습니다. 자세한 내용은 백업 삭제를 참조하세요.

제한사항

  • Private Service Connect를 사용하는 Cloud SQL 인스턴스에는 고급 DR이 지원되지 않습니다.
  • 기본 인스턴스가 PITR(point-in-time recovery)에 대한 트랜잭션 로그를 디스크에 저장할 경우에는 Cloud SQL Enterprise Plus 버전 읽기 복제본 인스턴스를 DR 복제본으로 지정할 수 없습니다. 인스턴스가 PITR 로그를 저장하는지 확인하려면 PITR에 사용되는 트랜잭션 로그의 스토리지 위치 확인을 참조하세요.
  • 외부 복제본은 DR 복제본으로 지정할 수 없습니다.

문제 해결

문제 문제 해결
전환 작업에 실패했습니다.
    인스턴스가 명시된 모든 DR 복제본(연쇄 가능한 복제본) 요구사항을 충족하는지 확인합니다.
  • 데이터베이스에서 트랜잭션 볼륨을 확인합니다. 트랜잭션 볼륨이 많으면 작업이 시간 초과될 수 있습니다. 트랜잭션 부하가 낮을 때 작업을 다시 시도하세요.
전환 작업이 실패하고 기본 인스턴스가 읽기 전용 모드로 고정됩니다. 데이터베이스를 다시 시작하여 기본 인스턴스를 다시 쓰기 모드로 전환합니다.
전환 작업이 완료되었지만 Google Cloud 콘솔에 인스턴스의 새로 전환된 역할이 표시되지 않습니다. 브라우저를 새로고침하여 업데이트된 토폴로지를 표시합니다.
복제본 장애 조치 작업에 실패했습니다.
  • 기본 인스턴스에 대한 DR 복제본을 만들었고 DR 복제본이 온라인 상태인지 확인합니다.
  • DR 복제본으로 장애 조치가 실패했으면 대신 일반(DR이 아님) 읽기 복제본으로 승격합니다.

다음 단계