고가용성을 위한 기존 구성

이 페이지에서는 고가용성(HA)을 위한 MySQL 인스턴스의 기존 구성을 설명합니다.

기존 HA 구성에서 MySQL용 Cloud SQL 인스턴스는 장애 조치 복제본을 사용하여 인스턴스에 고가용성을 추가합니다. Google Cloud 콘솔에서는 이 기능을 사용할 수 없습니다. 권장되는 구성은 장애 조치 복제본을 사용하지 않습니다. 대신 한 리전 내 두 영역 간에 블록 수준에서 데이터를 동기식으로 복제하는 Google의 리전 영구 디스크를 사용합니다.

현재 고가용성 구성에 관한 자세한 정보는 고가용성 구성 개요를 참조하세요.

인스턴스를 기존 고가용성에서 현재 고가용성으로 업데이트

인스턴스를 기존 구성에서 고가용성 구성으로 업데이트하려면 다음 단계를 따르세요.

  1. 업데이트할 MySQL 인스턴스에서 장애 조치 복제본을 삭제합니다. 자세한 내용은 인스턴스에서 고가용성 사용 중지를 참고하세요.
  2. 현재 버전의 고가용성을 사용하도록 인스턴스를 구성합니다. 자세한 내용은 기존 인스턴스를 고가용성으로 구성을 참고하세요.

기존 구성: 고가용성으로 구성된 새 인스턴스 만들기

인스턴스를 만들 때 고가용성으로 구성하면 Cloud SQL에서 기본 인스턴스를 만드는 동시에 장애 조치 복제본을 만듭니다. Google Cloud 콘솔에서는 기존 기능을 사용할 수 없습니다. 대신 gcloud CLI 또는 cURL 명령어를 사용하세요.

고가용성으로 구성된 인스턴스를 만들려면 다음과 같이 합니다.

gcloud

  1. 기본 인스턴스 및 장애 조치 복제본을 만듭니다.
    gcloud sql instances create PRIMARY_INSTANCE_NAME \
    --backup-start-time=BACKUP_WINDOW_START_TIME \
    --failover-replica-name=FAILOVER_REPLICA_NAME \
    --cpu=CPU \
    --database-version=DATABASE_VERSION \
    --memory=MEMORY \
    --enable-bin-log

    백업 기간의 시작 시간은 HH:MM 형식입니다.

    DATABASE_VERSION 자리 표시자를 MySQL 5.6 또는 MySQL 5.7(--database-version=MYSQL_5_6 또는
    --database-version=MYSQL_5_7)로 바꿔야 합니다.

    database-version 매개변수의 버전을 지정하지 않으면 기본적으로 MySQL 8.0이 선택됩니다. MySQL의 고가용성 기존 구성에서는 버전 8.0이 지원되지 않습니다.

    사용 가능한 매개변수의 전체 목록은 gcloud sql 인스턴스 만들기 참조 페이지를 확인하세요.

  2. 기본 인스턴스에 루트 사용자를 구성합니다.
    gcloud sql users set-password root --host=% \
    --instance PRIMARY_INSTANCE_NAME \
    --password PASSWORD

    장애 조치 복제본은 기본 인스턴스와 동일한 CPU 및 메모리를 사용하여 생성됩니다. 장애 조치 복제본의 CPU와 메모리는 나중에 변경할 수 있지만 그 크기는 적어도 기본 인스턴스보다 크거나 같아야 합니다.

curl

  1. 기본 인스턴스 및 장애 조치 복제본을 만듭니다.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name":"PRIMARY_INSTANCE_NAME", "region":"REGION",
                  "settings": {
                               "tier":"MACHINE_TYPE",
                               "backupConfiguration": {"binaryLogEnabled": true, "enabled": true}},
                               "failoverReplica": {"name": "FAILOVER_REPLICA_NAME"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
    이 요청에서 사용 가능한 매개변수의 전체 목록은 instances:insert 페이지를 참조하세요.
  2. 기본 인스턴스의 초기화가 완료되면 기본 인스턴스의 루트 비밀번호를 업데이트합니다.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "root", "host": "%", "password": "ROOT_PASSWORD"}' \
         'https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME/users?host=%25&name=root'
    이 변경사항은 자동으로 복제본에 전달됩니다.

기존 구성: 기존 인스턴스를 고가용성으로 구성

기존 인스턴스를 고가용성으로 구성하면 인스턴스가 재구성되는 동안 다운타임이 몇 분 정도 발생합니다.

기존 인스턴스를 고가용성으로 구성하려면 다음과 같이 합니다.

gcloud

  1. 기본 인스턴스의 상태를 확인합니다.
    gcloud sql instances describe PRIMARY_INSTANCE_NAME

    databaseReplicationEnabled 속성이 true이면 인스턴스가 복제본인 것입니다. 복제본에 대해서는 장애 조치 복제본을 만들 수 없습니다.

  2. backupConfiguration 아래의 enabled 속성이 false이면 기본 인스턴스에 백업을 사용 설정합니다.
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time HH:MM

    backup-start-time 매개변수는 UTC±00 시간대의 24시간 형식으로 지정되며 백업 기간(4시간)의 시작 시간을 지정합니다. 백업은 백업 기간 중에 언제든지 시작될 수 있습니다.

  3. binaryLogEnabled 속성이 false이면 바이너리 로그를 사용 설정합니다.
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log

    바이너리 로그를 사용 설정하면 인스턴스가 다시 시작됩니다.

  4. 복제본을 만듭니다.
    gcloud sql instances create FAILOVER_REPLICA_NAME \
    --master-instance-name=PRIMARY_INSTANCE_NAME \
    --replica-type=FAILOVER

curl

  1. 기본 인스턴스의 상태를 확인합니다.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME?fields=settings

    출력에 backupConfiguration이 포함됩니다. 예를 들면 다음과 같습니다.

    "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
    }
    
  2. enabled 또는 binaryLogEnabledfalse이면 인스턴스 리소스의 patch 메서드를 사용하여 둘 다 사용 설정합니다. 유지하려는 백업 구성과 변경하려는 백업 구성의 속성을 지정합니다.

    백업을 사용 설정하려면 enabledtrue로, startTime을 백업 기간의 시작 값으로 설정합니다. 바이너리 로깅을 사용 설정하려면 binaryLogEnabledtrue로 설정합니다.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"settings" : {"backupConfiguration" : {"startTime": "HH:MM", "enabled": true, "binaryLogEnabled": true}}}' \
         -X PATCH \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/
  3. 인스턴스 리소스의 insert 메서드를 사용하여 장애 조치 복제본을 만듭니다.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "REPLICA_NAME", "masterInstanceName": "PRIMARY_INSTANCE_NAME",
                  "region": "PRIMARY_IMSTANCE_REGION", "databaseVersion": "PRIMARY_DATABASE_VERSION",
                  "replicaConfiguration": {"failoverTarget": true},
                  "settings": {"tier":"MACHINE_TYPE"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

    MACHINE_TYPE은 최소한 기본 인스턴스의 머신 유형보다 크거나 같아야 합니다.

장애 조치 시작

장애 조치 테스트는 선택사항이지만 장애 조치 발생 시 애플리케이션의 응답 방식을 확인하기 위해 테스트하는 것이 좋습니다.

장애 조치에 대한 자세한 내용은 장애 조치 개요를 참조하세요.

gcloud

다음 명령어를 통해 장애 조치를 시작합니다.

gcloud sql instances failover PRIMARY_INSTANCE_NAME

curl

  1. 기본 인스턴스를 기술하여 settingsVersion 필드 값을 가져옵니다.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME
  2. 다음 명령어를 통해 장애 조치를 시작합니다.
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"failoverContext":{"settingsVersion":"SETTINGS_VERSION"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/PRIMARY_INSTANCE_NAME/failover

인스턴스가 장애 조치되며 몇 분 동안 데이터를 제공할 수 없게 됩니다.

기존 구성: 복제 지연 알림 만들기

장애 조치 작업에 걸리는 시간은 장애 조치 시작 시의 복제 지연 정도에 따라 다릅니다. 복제 지연 시간이 임곗값을 초과하면 Google Cloud 콘솔에서 Cloud Monitoring을 사용하여 알림을 보낼 수 있습니다.

복제 지연에 관한 자세한 내용은 MySQL 문서의 SHOW SLAVE STATUS 구문 페이지에서 'seconds_behind_master'를 검색하세요.

Cloud Monitoring에 대한 자세한 내용은 Cloud Monitoring 문서를 참조하세요.

기존 구성: 특정 장애 조치 복제본에 알림 설정

  1. Google Cloud 콘솔의 탐색 패널에서 Monitoring을 선택한 후 알림을 선택합니다.
  2. 알림 정책 만들기를 클릭합니다.
  3. 알림을 설명하는 이름을 입력합니다.
  4. 측정항목 기준을 선택하고 다음을 클릭하여 대상 탭을 엽니다.
  5. 리소스 유형에서 Cloud SQL을 선택합니다.
  6. 적용 대상에서 단일을 선택한 다음 장애 조치 복제본을 선택합니다.
  7. 다음을 클릭하여 구성 탭을 엽니다.
  8. 다음 값을 입력합니다.

    필드
    측정항목 조건 마스터보다 뒤처진 시간(초)
    조건 위쪽
    기준 120(또는 사용자 환경에 적합한 값)
    대상: 3분

  9. 알림 방법을 선택하고 조건 저장을 클릭합니다.

기존 구성: 장애 조치 복제본 그룹에 알림 설정

같은 프로젝트에 장애 조치 복제본을 여러 개 만들려면 각 장애 조치 복제본이 아닌 전체 그룹에 알림을 설정하는 것이 더 간편할 수 있습니다. 모니터링할 그룹을 만들려면 장애 조치 복제본 이름에 '-failover'와 같은 접미사를 사용합니다. 다른 유형의 Cloud SQL 인스턴스에는 이 서픽스를 사용하지 마세요.

다음과 같이 장애 조치 복제본 그룹을 만듭니다.

  1. Google Cloud Console에서 Monitoring 페이지로 이동합니다.

    모니터링으로 이동

  2. 상단 메뉴 바에서 그룹 > 만들기...를 선택합니다.
  3. 그룹을 설명하는 이름을 입력합니다.
  4. 이름포함이 선택된 상태에서 이름 하위 문자열을 입력합니다.
  5. 그룹 저장을 클릭합니다. 새 그룹에 관한 요약 페이지가 열립니다.
  6. 예상한 인스턴스가 그룹에 포함되어 있는지 확인합니다.

다음과 같이 장애 조치 복제본 그룹 알림을 만듭니다.

  1. Google Cloud 콘솔의 탐색 패널에서 Monitoring을 선택한 후 알림을 선택합니다.
  2. 알림 정책 만들기를 클릭합니다.
  3. 그룹 알림을 설명하는 이름을 입력합니다.
  4. 측정항목 기준을 선택하고 다음을 클릭하여 대상 탭을 엽니다.
  5. 리소스 유형에서 Cloud SQL을 선택합니다.
  6. 적용 대상에서 그룹을 선택한 다음 장애 조치 그룹을 선택합니다.
  7. 구성원 위반이 선택된 상태에서 다음을 클릭하여 구성 탭을 엽니다.
  8. 다음 값을 입력합니다.

    필드
    측정항목 조건 마스터보다 뒤처진 시간(초)
    조건 위쪽
    기준 120(또는 사용자 환경에 적합한 값)
    대상: 3분

  9. 원하는 알림 방법을 선택하고 조건 저장을 클릭합니다.

기존 구성: 인스턴스에서 고가용성 중지

기본 인스턴스에서 고가용성을 삭제하려면 장애 조치 복제본 인스턴스를 삭제해야 합니다.

이 절차를 수행하기 전에 현재 기본 인스턴스에 실행 중인 작업이 없는지 확인합니다.

고가용성을 중지하려면 다음과 같이 합니다.

Console

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

    Cloud SQL 인스턴스로 이동

  2. 고가용성을 중지하려는 인스턴스와 연결된 장애 조치 인스턴스를 선택합니다.
  3. 인스턴스 세부정보 페이지에서 삭제를 클릭합니다.
  4. 복제본 삭제 창에서 장애 조치 인스턴스 이름을 다시 입력합니다.
  5. 삭제를 클릭하세요. 원래 인스턴스의 구성이 영역으로 변경됩니다.

gcloud

참조 정보는 gcloud sql instances delete를 확인하세요.
gcloud sql instances delete FAILOVER_REPLICA_NAME

curl

다음 요청에서는 instances:delete 메서드를 호출하여 인스턴스를 삭제합니다.
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json'\
      -X DELETE\
https://www.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_NAME

다음 단계