고급 재해 복구(DR) 사용

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

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

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

DR 복제본 지정

고급 DR을 수행하기 위해서는 먼저 교차 리전 DR 복제본을 지정해야 합니다.

시작하기 전에

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 읽기 복제본은 다음 요구사항을 충족해야 합니다.

  • Cloud SQL Enterprise Plus 버전 인스턴스여야 합니다.
  • 데이터베이스 주 및 부 버전이 MySQL 8.0.31 이상을 실행하는 기본 인스턴스와 동일해야 합니다.
  • 기본 인스턴스와 별개의 리전에 있어야 합니다.
  • 직접 읽기 복제본이어야 합니다. 연결된 복제본일 수 없습니다.
  • 기본값을 사용하는 것 외에도 DR 복제본에 다음과 같이 구성된 플래그가 없어야 합니다.
    • replicate_do_db
    • replicate_ignore_db
    • replicate_do_table
    • replicate_wild_do_table
    • replicate_ignore_table
    • replicate_wild_ignore_table
  • PITR에 사용되는 트랜잭션 로그를 Cloud Storage에 저장해야 합니다.
  • 외부 복제본일 수 없습니다.

DR 복제본 권장사항

이 섹션에서는 DR 복제본의 권장사항을 설명합니다. 다음 권장사항은 배포에서 성능 문제를 방지하는 데 도움이 될 수 있습니다.

  • 기본 인스턴스와 동일한 디스크 크기를 사용하거나 자동 증가를 사용 설정합니다.
  • 일관된 HA 구성을 사용합니다. 기본 인스턴스에서 HA를 사용 설정하는 경우 DR 복제본에서도 HA를 사용 설정합니다.
  • 일관된 데이터 캐시 구성을 사용합니다. 기본 인스턴스에서 데이터 캐시를 사용 설정하는 경우 DR 복제본에서도 데이터 캐시를 사용 설정합니다.
  • 전환 또는 복제본 장애 조치 작업을 수행하기 전과 후에 DR 복제본에 대해 적합한 데이터베이스 플래그를 구성합니다.

DR 복제본 요구사항을 충족하는 복제본 만들기

기본 인스턴스에 DR 복제본 요구사항을 충족하는 리전 간 읽기 복제본이 아직 없으면 하나 만듭니다.

콘솔

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

    Cloud SQL 인스턴스로 이동

  2. 기본 인스턴스를 찾습니다.
  3. 작업 열에서 추가 작업 메뉴를 클릭합니다.
  4. 읽기 복제본 만들기를 선택합니다.
  5. 인스턴스 ID 필드에 DR 복제본 이름을 입력합니다.
  6. 데이터베이스 버전 필드에 MySQL 8.0이 이미 선택되어 있습니다.
  7. 부 버전 필드에서 사전 선택된 부 버전을 유지합니다. DR 복제본과 기본 인스턴스는 동일한 데이터베이스 부 버전을 공유해야 합니다.
  8. 페이지의 리전 및 영역 가용성 선택 섹션에서 다음을 수행합니다.
    • 기본 인스턴스의 리전과 다른 리전을 선택합니다.
    • 선택사항. DR 복제본에 대해 여러 영역을 선택합니다.
    • 선택사항. DR 복제본에 대해 기본보조 영역을 선택합니다.
  9. 페이지의 인스턴스 맞춤설정 섹션에서 DR 복제본의 설정을 업데이트할 수 있습니다. 각 설정에 대한 자세한 내용은 인스턴스 설정 정보 페이지를 참조하세요.
  10. 머신 형태에서 기본 인스턴스와 동일한 머신 유형을 선택합니다.
  11. 플래그에서 데이터베이스에 필요한 플래그를 구성합니다.
  12. 복제본 만들기를 클릭합니다.

Cloud SQL이 기본 인스턴스 백업을 만들고 복제본을 만듭니다. 기본 인스턴스에 대한 인스턴스 페이지로 돌아갑니다.

gcloud

DR 복제본의 요구사항을 충족하는 복제본을 만들기 위해 다음 명령어를 실행합니다.

gcloud sql instances create REPLICA_NAME \
   --master-instance-name=PRIMARY_INSTANCE_NAME \
   --region=REPLICA_REGION_NAME \
   --database-version=DATABASE_VERSION \
   --tier=MACHINE_TYPE \
   --availability-type=AVAILABILITY_TYPE
   --edition="ENTERPRISE_PLUS"

다음 변수를 바꿉니다.

  • REPLICA_NAME: DR 복제본의 이름입니다.
  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • REPLICA_REGION_NAME: 기본 인스턴스의 리전과 다른 리전을 지정합니다.
  • DATABASE_VERSION: 기본 인스턴스의 데이터베이스 주 버전 및 부 버전과 일치하는 버전 문자열을 지정합니다(예: MYSQL_8_0_31).

    데이터베이스 주 버전 및 부 버전은 기본 및 DR 복제본 모두 동일해야 합니다.

  • MACHINE_TYPE: 기본 인스턴스와 동일한 머신 유형을 지정합니다. 머신 유형이 기본 인스턴스의 머신 유형과 일치하는 것이 좋습니다.
  • AVAILABILITY_TYPE: 기본 인스턴스가 고가용성으로 구성된 경우 고가용성을 사용 설정하도록 REGIONAL을 지정하는 것이 좋습니다.
  • EDITION: ENTERPRISE_PLUS를 지정합니다.

REST v1

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

  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • DATABASE_VERSION:: 기본 인스턴스의 데이터베이스 주 버전 및 부 버전과 일치하는 버전 문자열입니다(예: MYSQL_8_0_31). 데이터베이스 주 버전 및 부 버전은 기본 및 DR 복제본 모두 동일해야 합니다.
  • REPLICA_NAME: 만들려는 DR 복제본 인스턴스의 이름입니다.
  • REPLICA_REGION: DR 복제본 인스턴스의 리전입니다. 복제본 리전은 기본 인스턴스의 리전과 달라야 합니다.
  • MACHINE_TYPE: 기본 인스턴스와 동일한 머신 유형을 지정합니다. 기본 인스턴스와 동일한 머신 유형을 선택하는 것이 좋습니다.
  • AVAILABILITY_TYPE: 기본 인스턴스가 고가용성으로 구성된 경우 고가용성을 사용 설정하도록 REGIONAL을 지정하는 것이 좋습니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "DATABASE_VERSION",
  "name": "REPLICA_NAME",
  "region": "REPLICA_REGION",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "replicationType": "ASYNCHRONOUS",
  }
}

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

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

REST v1beta4

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

  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • DATABASE_VERSION:: 기본 인스턴스의 데이터베이스 주 버전 및 부 버전과 일치하는 버전 문자열입니다(예: MYSQL_8_0_31). 데이터베이스 주 버전 및 부 버전은 기본 및 DR 복제본 모두 동일해야 합니다.
  • REPLICA_NAME: 만들려는 DR 복제본 인스턴스의 이름입니다.
  • REPLICA_REGION: DR 복제본 인스턴스의 리전입니다. 복제본 리전은 기본 인스턴스의 리전과 달라야 합니다.
  • MACHINE_TYPE: 기본 인스턴스와 동일한 머신 유형을 지정합니다. 디스크 크기가 기본 인스턴스의 디스크 크기와 일치하는 것이 좋습니다.
  • AVAILABILITY_TYPE: 기본 인스턴스가 고가용성으로 구성된 경우 고가용성을 사용 설정하도록 REGIONAL을 지정하는 것이 좋습니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "DATABASE_VERSION",
  "name": "REPLICA_NAME",
  "region": "REPLICA_REGION",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "replicationType": "ASYNCHRONOUS",
  }
}

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

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

기본 인스턴스의 DR 복제본 지정

다음 절차에서는 전환 또는 복제본 장애 조치를 위해 기본 인스턴스의 교차 리전 복제본 중 하나를 DR 복제본으로 지정하는 방법을 설명합니다.

콘솔

기본 인스턴스의 DR 복제본을 지정하기 위해 gcloud CLI 또는 Cloud SQL Admin API를 사용합니다.

gcloud

기본 인스턴스에 대한 DR 복제본을 지정하려면 다음 명령어를 사용합니다.

gcloud beta sql instances patch PRIMARY_INSTANCE_NAME \
   --failover-dr-replica-name=PROJECT_ID:REPLICA_NAME

다음 변수를 바꿉니다.

  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다. 지정 시 프로젝트 ID를 명시해야 합니다.
  • REPLICA_NAME: DR 복제본의 이름입니다.

REST v1

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

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다. 지정 시 프로젝트 ID를 명시해야 합니다.
  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • REPLICA_NAME: DR 복제본의 이름입니다.

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME

JSON 요청 본문:

{
  "replicationCluster": {
     "failoverDrReplicaName": "PROJECT_ID:REPLICA_NAME"
   }
}

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

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

REST v1beta4

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

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다. 지정 시 프로젝트 ID를 명시해야 합니다.
  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • REPLICA_NAME: DR 복제본의 이름입니다.

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME

JSON 요청 본문:

{
  "replicationCluster": {
     "failoverDrReplicaName": "PROJECT_ID:REPLICA_NAME"
   }
}

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

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

DR 복제본 지정 변경

복제본이 요구사항을 충족하는 경우 다른 복제본을 DR 복제본으로 지정할 수 있습니다. 이전 DR 복제본은 DR 복제본 지정이 손실됩니다.

gcloud

DR 복제본을 변경하려면 지정 명령어를 다시 실행하고 다른 DR 복제본을 지정합니다.

REST

DR 복제본을 변경하려면 API 지정 요청을 다시 수행하고 다른 DR 복제본을 지정합니다.

DR 복제본 지정 보기

gcloud CLI 또는 Cloud SQL Admin API를 사용해서 기본 인스턴스에 지정된 DR 복제본을 확인할 수 있습니다. 또한 복제본이 지정된 DR 복제본인지 확인할 수 있습니다.

기본 인스턴스에 지정된 DR 복제본을 찾으려면 다음 절차를 수행합니다.

gcloud

기본 인스턴스에 지정된 DR 복제본인 인스턴스를 찾기 위해 다음 명령어를 사용합니다.

gcloud beta sql instances describe PRIMARY_INSTANCE_NAME

다음 변수를 바꿉니다.

  • PRIMARY_INSTANCE_NAME: 기본 인스턴스의 이름입니다.

이 명령어의 출력에는 지정된 DR 복제본을 식별하는 failoverDrReplica라는 필드가 포함되어 있습니다.

REST v1

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호입니다.
  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME

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

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

REST v1beta4

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호입니다.
  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME

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

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

복제본이 DR 복제본인지 확인하려면 다음 절차 중 하나를 수행합니다.

gcloud

복제본 인스턴스가 DR 복제본인지 확인하기 위해 다음 명령어를 실행합니다.

gcloud beta sql instances describe REPLICA_NAME

다음 변수를 바꿉니다.

  • REPLICA_NAME: 확인하려는 읽기 복제본의 이름입니다.

복제본이 DR 복제본이면 명령어 출력에 drReplica=true 필드가 포함됩니다.

REST v1

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호입니다.
  • REPLICA_NAME: 복제본의 이름입니다.

HTTP 메서드 및 URL:

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

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

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

REST v1beta4

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

  • PROJECT_ID: 인스턴스가 포함된 Google Cloud 프로젝트의 ID 또는 프로젝트 번호입니다.
  • REPLICA_NAME: 복제본의 이름입니다.

HTTP 메서드 및 URL:

GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/REPLICA_NAME

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

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

DR 복제본 삭제

기본 인스턴스에서 DR 복제본 지정을 삭제할 수 있습니다. 하지만 기본 인스턴스에 지정된 DR 복제본이 없으면 전환 또는 복제본 장애 조치를 수행할 수 없습니다.

gcloud

DR 복제본 지정을 삭제하려면 기본 인스턴스에서 다음 명령어를 실행합니다.

gcloud beta sql instances patch PRIMARY_INSTANCE_NAME \
  --clear-failover-dr-replica-name

다음 변수를 바꿉니다.

  • PRIMARY_INSTANCE_NAME: 지정된 DR 복제본을 삭제하려는 기본 인스턴스의 이름입니다.

REST v1

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

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • failoverDrReplicaName 필드를 빈 문자열로 설정합니다.

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME

JSON 요청 본문:

{
  "replicationCluster": {
     "failoverDrReplicaName": ""
   }
}

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

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

REST v1beta4

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

  • PROJECT_ID: 기본 인스턴스 및 DR 복제본의 Google Cloud 프로젝트에 대한 ID 또는 프로젝트 번호입니다.
  • PRIMARY_INSTANCE_NAME: 기본 인스턴스 이름입니다.
  • failoverDrReplicaName 필드를 빈 문자열로 설정합니다.

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/PRIMARY_INSTANCE_NAME

JSON 요청 본문:

{
  "replicationCluster": {
     "failoverDrReplicaName": ""
   }
}

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

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

전환 수행

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

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

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

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

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

시작하기 전에

전환 작업을 수행하기 전에 다음을 수행합니다.

  • DR 복제본을 지정합니다. 기본 인스턴스와 지정된 DR 복제본 사이에서만 전환을 수행할 수 있습니다.
  • 기본 인스턴스와 DR 복제본이 온라인 상태인지 확인합니다.
  • 기본 인스턴스의 주문형 백업을 수행합니다. 이 백업은 예기치 않은 오류로부터 복구가 필요한 경우에 대비한 예방책입니다.

전환 작업 수행

gcloud

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

gcloud beta sql instances switchover REPLICA_NAME
   [--db-timeout=TIMEOUT_DURATION ]

다음 변수를 바꿉니다.

  • REPLICA_NAME: 기본 인스턴스가 역할을 전환하도록 지정된 DR 복제본의 이름입니다.
  • TIMEOUT_DURATION: 선택사항. 인스턴스에서 데이터베이스 작업을 수행할 수 있는 제한 시간 기간입니다.
  • 이 매개변수를 지정하지 않은 경우 전환 작업에 제한 시간 10분이 포함됩니다.

    --db-timeout 매개변수를 지정하여 이 제한 시간 값을 늘릴 수 있습니다. TIMEOUT_DURATION을 최대 24시간 동안 지속되는 기간으로 바꾸고 초기 형식 표기를 포함합니다. 예를 들어 30초면 30s를 지정합니다. 24시간이면 24h를 지정합니다. 또한 최대 9개의 소수점 자릿수를 사용해서 소수점 단위로 기간을 지정할 수 있습니다. 예를 들어 30.5분이면 30.5m을 지정합니다.

    대기 중인 작업이 없으면 이 제한 시간 값을 줄일 수 있습니다.

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/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 사용을 참조하세요.

시작하기 전에

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

  • 아직 수행하지 않으면 DR 복제본을 지정합니다. 기본 인스턴스와 지정된 DR 복제본 사이에서만 복제본 장애 조치를 수행할 수 있습니다.
  • DR 복제본이 온라인이고 정상 상태인지 확인합니다.

gcloud

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

gcloud beta 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. 다음 명령어를 실행하여 첫 번째 단계의 상태를 확인합니다.

    gcloud sql instances describe REPLICA_NAME
    

    다음 변수를 바꿉니다.

    • 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 보관 정책은 복제본으로 사용되는 동안에도 유지 및 적용됩니다. 새 기본 인스턴스가 백업을 수행하지 않더라도 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 복제본 요구사항을 충족하는지 확인합니다.
  • 데이터베이스에서 트랜잭션 볼륨을 확인합니다. 전환은 전환을 수행하기 전 Cloud Storage에 기본 인스턴스의 바이너리 로그를 저장합니다. 트랜잭션 볼륨이 많으면 작업이 시간 초과될 수 있습니다. 트랜잭션 부하가 낮을 때 작업을 다시 시도하세요.
전환 작업이 실패하고 기본 인스턴스가 읽기 전용 모드로 고정됩니다. 데이터베이스를 다시 시작하여 기본 인스턴스를 다시 쓰기 모드로 전환합니다.
전환 작업이 완료되었지만 Google Cloud 콘솔에 인스턴스의 새로 전환된 역할이 표시되지 않습니다. 브라우저를 새로고침하여 업데이트된 토폴로지를 표시합니다.
복제본 장애 조치 작업에 실패했습니다.
  • 기본 인스턴스에 대해 DR 복제본이 지정되었고 온라인 상태인지 확인합니다.
  • DR 복제본으로 장애 조치가 실패했으면 대신 일반(DR이 아님) 읽기 복제본으로 승격합니다.
복제가 수행되지 않았는지 확인할 수 없음 복제본에 연결하고 다음을 입력합니다.

show slave status;
  • 복제가 수행되었으면 첫 번째 열 "Slave_IO_State"에 "Waiting for master to send event"가 표시되고 "Last_IO_Error" 필드가 비어 있습니다.
  • 복제가 수행되지 않았으면 첫 번째 열 "Slave_IO_State""Connecting to master"가 표시됩니다. "Last_IO_Error" 필드에는 "error connecting to master 'cloudsqlreplica@x.x.x.x:3306"과 유사한 오류가 표시됩니다.

또한 Cloud SQL 모니터링 대시보드에서 복제본에 대한 복제 상태를 확인할 수 있습니다. 자세한 내용은 Cloud SQL 인스턴스 모니터링을 참조하세요.

다음 오류 메시지가 수신되었습니다.

"Instance was converted into a replica between the target PITR time and the last available base backup. PITR logs are not available for the period instance was a replica. Please clone from the instance that was primary at time %s"

인스턴스에서 복제본으로 전환이 수행될 때 일정 기간 동안 PITR을 수행할 수 없습니다. 인스턴스가 복제본인 기간에는 PITR 로그를 사용할 수 없습니다.

  • 인스턴스의 작업 목록을 검토하여 해당 시점에 인스턴스가 복제본이었는지 확인합니다.
  • 작업 목록을 사용해서 해당 시점에 기본 인스턴스였던 인스턴스를 확인합니다.
  • 해당 인스턴스를 클론하여 PITR을 수행합니다.

다음 오류 메시지가 수신되었습니다.

"You can only designate a disaster recovery (DR) replica for primary instances that are storing their PITR logs in Cloud Storage. PITR logs of the instance %s are not stored in Cloud Storage"

기본 인스턴스가 아직 해당 트랜잭션 로그의 스토리지 위치를 Cloud Storage로 전환하지 않았습니다. 트랜잭션 로그의 스토리지 위치가 전환된 후 다시 시도하거나 다른 기본 인스턴스의 DR 복제본을 지정할 수 있습니다.

PITR에 사용되는 트랜잭션 로그의 스토리지 위치를 이동하는 방법은 PITR(point-in-time recovery) 사용을 참조하세요.

다음 오류 메시지가 수신되었습니다.

"The specified failover dr replica name REPLICA_NAME must be one of the replicas of the primary instance INSTANCE_NAME."

기본 인스턴스의 DR 복제본을 지정할 때 프로젝트 ID 또는 번호를 명시해야 합니다.

DR 복제본 지정 방법 및 올바른 명령어 문법에 관해 자세히 알아보려면 기본 인스턴스의 DR 복제본 지정을 참조하세요.

다음 단계