복제본 관리

이 페이지에서는 읽기 복제본의 복제를 중지 및 사용 설정하는 방법과 복제본을 독립 실행형 인스턴스로 승격하거나 삭제하는 방법을 설명합니다. 읽기 복제본 작업에 대한 자세한 내용은 Cloud SQL의 복제를 참조하세요.

복제 사용 중지

기본적으로 복제본은 복제가 사용 설정된 상태에서 시작합니다. 그러나 인스턴스 상태를 디버그하거나 분석하는 등의 경우에 복제 사용을 중지할 수 있습니다. 준비가 되면 복제를 다시 사용하도록 명시적으로 설정합니다. 복제를 사용 중지하거나 다시 사용하도록 설정하면 복제본이 다시 시작됩니다.

복제를 사용 중지하면 복제 인스턴스는 중지되지 않고 읽기 전용 인스턴스가 되어 더 이상 기본 인스턴스에서 복제하지 않습니다. 인스턴스에 대한 요금은 계속 청구됩니다. 사용 중지된 복제본이 다시 복제를 사용하도록 설정하거나 복제본을 삭제하거나 독립형 인스턴스로 승격할 수 있습니다. 복제본은 중지할 수 없습니다.

복제 사용 중지 방법

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 복제본 인스턴스의 이름을 클릭하여 엽니다.
  3. 버튼 모음에서 복제 사용 중지를 클릭합니다.
  4. 확인을 클릭합니다.

gcloud

gcloud sql instances patch [REPLICA_NAME] --no-enable-database-replication

REST v1beta4

명령줄 프롬프트에서 이 cURL 명령어를 실행하려면 gcloud auth print-access-token 명령어를 사용하여 액세스 토큰을 획득해야 합니다. Instances:patch 페이지의 API 탐색기를 사용하여 REST API 요청을 보낼 수도 있습니다.

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

  • project-id: 프로젝트 ID
  • replica-name: 복제본 인스턴스의 이름

HTTP 메서드 및 URL:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name

JSON 요청 본문:

{
  "settings":
  {
    "databaseReplicationEnabled": "False"
  }
}

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

다음과 유사한 JSON 응답이 표시됩니다.

복제 사용 설정

복제본이 오랜 시간 동안 복제되지 않은 경우 기본 인스턴스를 복제하는 데 더 오래 걸릴 수 있습니다. 이 경우 해당 복제본을 삭제하고 새 복제본을 만듭니다.

복제를 사용 설정하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 복제본 인스턴스의 이름을 클릭하여 선택합니다.
  3. 버튼 모음에서 복제 사용 설정을 클릭합니다.
  4. 확인을 클릭합니다.

gcloud

gcloud sql instances patch [REPLICA_NAME] --enable-database-replication

REST v1beta4

명령줄 프롬프트에서 이 cURL 명령어를 실행하려면 gcloud auth print-access-token 명령어를 사용하여 액세스 토큰을 획득해야 합니다. Instances:patch 페이지의 API 탐색기를 사용하여 REST API 요청을 보낼 수도 있습니다.

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

  • project-id: 프로젝트 ID
  • replica-name: 복제본 인스턴스의 이름

HTTP 메서드 및 URL:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name

JSON 요청 본문:

{
  "settings":
  {
    "databaseReplicationEnabled": "True"
  }
}

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

다음과 유사한 JSON 응답이 표시됩니다.

복제본 승격

읽기 복제본을 승격하면 복제가 중지되고 인스턴스가 읽기 및 쓰기 기능을 포함한 독립형 Cloud SQL 기본 인스턴스로 변환됩니다. 이 작업은 취소할 수 없습니다.

읽기 복제본을 승격하기 전에 기본 인스턴스가 아직 사용 가능하고 클라이언트를 지원하는 경우, 기본 인스턴스에 대해 모든 쓰기를 중지하고, 복제본의 복제 상태 확인을 수행해야 합니다(MySQL 클라이언트 탭의 안내 참조). 복제본이 복제되는지 확인한 후 Seconds_Behind_Master 측정 항목으로 보고되는 복제 지연 시간이 0이 될 때까지 기다려야 합니다. 그렇지 않으면 새로 승격된 인스턴스에 기본 인스턴스에 커밋된 일부 트랜잭션이 누락될 수 있습니다.

복제본을 독립형 인스턴스로 승격하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 복제본 인스턴스의 이름을 클릭하여 선택합니다.
  3. 버튼 모음에서 복제본 승격을 클릭합니다.
  4. 확인을 클릭합니다.

gcloud

gcloud sql instances promote-replica [REPLICA_NAME]
  

REST v1beta4

명령줄 프롬프트에서 이 cURL 명령어를 실행하려면 gcloud auth print-access-token 명령어를 사용하여 액세스 토큰을 획득해야 합니다. Instances:promoteReplica 페이지의 API 탐색기를 사용하여 REST API 요청을 보낼 수도 있습니다.

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

  • project-id: 프로젝트 ID
  • replica-name: 복제본 인스턴스의 이름

HTTP 메서드 및 URL:

POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica

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

다음과 유사한 JSON 응답이 표시됩니다.

승격된 인스턴스가 올바르게 구성되었는지 확인합니다. 특히 자동 백업을 사용 설정하고 필요한 경우 고가용성 인스턴스를 구성하는 것이 좋습니다.

복제 상태 확인

관리 클라이언트를 사용하여 개별 복제본 인스턴스에 로그인하면 상태 및 측정항목 등 복제와 관련한 세부정보를 얻을 수 있습니다. Google Cloud Console 또는 gcloud 명령줄 도구를 사용하면 복제에 대한 요약을 볼 수 있습니다.

참고: Google Cloud Console을 사용하여 Cloud SQL 외부에 기본 인스턴스가 있는 복제본의 복제 상태를 확인할 수 없습니다.

복제 상태를 확인하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 복제본 인스턴스의 이름을 클릭하여 선택합니다.
  3. 복제 상태는 페이지 상단의 배너에 표시됩니다.

gcloud

복제 인스턴스의 경우 다음을 사용하여 복제 상태를 확인합니다.

gcloud sql instances describe [REPLICA_NAME]

출력에서 databaseReplicationEnabled 속성 및 masterInstanceName 속성을 확인합니다.

기본 인스턴스의 경우 다음을 사용하여 복제본이 있는지 확인합니다.

gcloud sql instances describe [PRIMARY_INSTANCE_NAME]

출력에서 replicaNames 속성을 확인합니다.

MySQL 클라이언트

  1. MySQL 클라이언트로 복제본에 연결합니다.

    자세한 내용은 외부 애플리케이션 연결 옵션을 참조하세요.

  2. 복제본 상태를 확인합니다.
    SHOW SLAVE STATUS \G
  3. 명령어 출력에서 다음 측정항목을 확인합니다.
    • Master_Host: 기본 인스턴스 이름입니다.
    • Slave_IO_Running: 기본 인스턴스에서 읽기 위한 I/O 스레드가 실행 중인지 여부를 나타냅니다. 복제가 시작되면 값은 Yes입니다.
    • Slave_SQL_Running: 릴레이 로그의 이벤트 실행에서 SQL 스레드가 실행 중인지 여부를 나타냅니다. 복제가 시작되면 값은 Yes입니다.
    • Seconds_Behind_Master: 기본 인스턴스의 바이너리 로그를 처리하는 데 복제본 SQL 스레드가 뒤처진 시간(초)입니다. 값은 O 또는 작은 값(초)입니다.

    명령어에서 출력에 대한 자세한 내용은 복제 상태 확인을 참조하세요.

문제 해결

자세한 내용을 보려면 표의 링크를 클릭하세요.

문제 설명 문제 원인 해결 방법
생성 시 읽기 복제본이 복제를 시작하지 않았습니다. 바이너리 로깅이 사용 설정된 후에 백업이 최소 한 개 이상 생성되어 있어야 합니다. 바이너리 로그를 사용 설정한 후 백업이 하나 이상 생성될 때까지 기다립니다.
읽기 복제본을 만들 수 없음 - 알 수 없는 오류 여러 근본 원인이 있을 수 있습니다. 로그에서 자세한 내용을 확인하세요.
디스크가 가득 참 복제본을 만드는 동안 기본 인스턴스 디스크 크기가 가득 찰 수 있습니다. 기본 인스턴스를 더 큰 디스크 크기로 업그레이드합니다.
복제본 인스턴스가 너무 많은 메모리를 사용 복제본은 자주 요청되는 읽기 작업을 캐시할 수 있습니다. 임시 메모리 공간을 회수하려면 복제본 인스턴스를 다시 시작합니다.
복제가 중지되었습니다. 최대 저장공간에 도달했고 저장용량 자동 증가가 사용 설정되지 않았습니다. 저장용량 자동 증가를 사용 설정합니다.
긴 복제 지연 시간이 지속적으로 발생합니다. 다양한 근본 원인이 있을 수 있습니다. 여기에서 몇 가지 해결 방법을 확인하세요.

생성 시 읽기 복제본이 복제를 시작하지 않음

생성 시 읽기 복제본이 복제를 시작하지 않았습니다.

문제 원인

기본 인스턴스에는 적어도 일주일 동안의 binlog가 있어야 합니다. 그렇지 않으면 복제본이 복제를 시작할 수 없습니다.

해결 방법

충분한 binlog가 생성될 때까지 기다립니다.


읽기 복제본을 만들 수 없음 - 알 수 없는 오류

읽기 복제본을 만들 수 없음 - unknown error.

문제 원인

로그 파일에 더 구체적인 오류가 있을 수 있습니다.

해결 방법

Cloud Logging의 로그를 검사하여 실제 오류를 찾습니다. 오류가 set Service Networking service account as servicenetworking.serviceAgent role on consumer project이면 Service Networking API를 사용 중지했다가 다시 사용 설정합니다. 이렇게 하면 프로세스를 계속 진행하는 데 필요한 서비스 계정이 생성됩니다.


디스크가 가득 참

UPDATE_DISK_SIZE 또는 mysqld: disk is full 오류

문제 원인

복제본을 만드는 동안 기본 인스턴스 디스크 크기가 가득 찰 수 있습니다.

해결 방법

기본 인스턴스를 수정하여 더 큰 디스크 크기로 업그레이드합니다.


복제본 인스턴스가 너무 많은 메모리를 사용

복제본 인스턴스가 너무 많은 메모리를 사용하고 있습니다.

문제 원인

복제본은 임시 메모리를 사용하여 자주 요청되는 읽기 작업을 캐시하므로 기본 인스턴스보다 더 많은 메모리를 사용할 수 있습니다.

해결 방법

복제본 인스턴스를 다시 시작하여 임시 메모리 공간을 회수합니다.


복제 중지됨

복제가 중지되었습니다.

문제 원인

최대 저장용량 한도에 도달했고 >automatic storage increase is disabled.

해결 방법

인스턴스를 수정하여 automatic storage increase를 사용 설정합니다.


긴 복제 지연 시간이 지속적으로 발생함

긴 복제 지연 시간이 지속적으로 발생합니다.

문제 원인

쓰기 부하가 너무 높아 복제본이 처리할 수 없습니다. 복제본의 SQL 스레드가 IO 스레드를 따라잡을 수 없는 경우 복제 지연이 발생합니다. 일부 쿼리 또는 워크로드로 인해 특정 스키마에서 일시적이거나 영구적인 복제 지연이 발생할 수 있습니다. 복제 지연이 발생하는 일반적인 원인은 다음과 같습니다.

  • 복제본에 대한 쿼리의 속도가 느립니다. log_slow_slave_statements를 사용 설정하여 이러한 쿼리를 검색한 후 수정하면 됩니다.
  • 모든 테이블에 고유/기본 키가 있어야 합니다. 테이블에 고유/기본 키가 없으면 업데이트할 때마다 복제본에서 전체 테이블 검사를 수행해야 합니다.
  • DELETE ... WHERE field < 50000000과 같은 쿼리의 경우 복제본에 다수의 업데이트가 쌓이게 되므로 행 기준 복제에서 복제 지연이 발생합니다.

해결 방법

가능한 해결책은 다음과 같습니다.

  • 인스턴스를 수정하여 복제본 크기를 늘립니다.
  • 데이터베이스의 부하를 줄입니다.
  • 테이블 색인을 생성합니다.
  • 느린 쿼리를 찾아 수정합니다.
  • 복제본을 다시 만듭니다.

다음 단계