읽기 복제본 구성

이 페이지에서는 읽기 복제본을 관리하는 방법을 설명합니다. 이러한 작업에는 복제 중지 및 사용 설정, 복제본 승격, 병렬 복제 구성, 복제 상태 확인이 포함됩니다.

복제 작동 방식에 대한 자세한 내용은 Cloud SQL의 복제를 참조하세요.

이 페이지는 Cloud SQL 인스턴스의 복제본에 적용됩니다. 외부 구독자에 대해 게시자로 작동하도록 Cloud SQL 인스턴스를 설정하려면 외부 복제본 구성을 참조하세요.

복제 중지

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

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

복제 사용 중지 방법

콘솔

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

    Cloud SQL 인스턴스로 이동

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

gcloud

gcloud sql instances patch REPLICA_NAME \
--no-enable-database-replication

REST v1

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

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

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

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name

JSON 요청 본문:

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

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

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

REST v1beta4

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

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

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

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

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

복제 사용 설정

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

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

콘솔

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

    Cloud SQL 인스턴스로 이동

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

gcloud

gcloud sql instances patch REPLICA_NAME \
--enable-database-replication

REST v1

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

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

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

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name

JSON 요청 본문:

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

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

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

REST v1beta4

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

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

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

HTTP 메서드 및 URL:

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

JSON 요청 본문:

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

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

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

복제본 승격

읽기 복제본을 승격하면 복제가 중지되고 인스턴스가 읽기 및 쓰기 기능을 포함한 독립형 Cloud SQL 기본 인스턴스로 변환됩니다.

승격될 때 읽기 복제본은 자동으로 백업으로 구성되지만 고가용성(HA) 인스턴스로 자동 구성되지는 않습니다. 복제본이 아닌 인스턴스와 마찬가지로 복제본을 승격한 후에 고가용성을 사용 설정할 수 있습니다. 고가용성을 위해 읽기 복제본을 구성하는 작업은 기본 인스턴스와 동일한 방식으로 수행됩니다. 고가용성을 위한 인스턴스 구성 자세히 알아보기

읽기 복제본을 승격하기 전에 기본 인스턴스가 계속 사용 가능하며 클라이언트를 지원하는 경우 다음을 수행해야 합니다.

  1. 기본 인스턴스에 대한 모든 쓰기를 중지합니다.
  2. 복제본의 복제 상태를 점검합니다. 이를 위한 한 가지 옵션은 SQL Server Management Studio(SSMS)의 상시 사용 설정 가용성 그룹 대시보드입니다.
  3. 먼저 복제본이 복제되고 있는지 확인한 후 seconds_behind_master 측정항목을 통해 보고된 것과 같이 복제 지연 시간을 확인합니다.

그렇지 않으면 기본 인스턴스에 커밋된 일부 트랜잭션이 새로 승격된 인스턴스에서 누락될 수 있습니다.

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

콘솔

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

    Cloud SQL 인스턴스로 이동

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

gcloud

gcloud sql instances promote-replica REPLICA_NAME
  

REST v1

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

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

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

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica

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

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

REST v1beta4

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

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

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

HTTP 메서드 및 URL:

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

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

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

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

복제 상태 확인

현재는 T-SQL 쿼리 또는 SSMS를 사용하여 복제본 상태를 모니터링해야 합니다. 자세한 내용은 다음을 참조하세요.

문제해결

문제 문제 해결
생성 시 읽기 복제본이 복제를 시작하지 않음 로그 파일에 더 구체적인 오류가 있을 수 있습니다. Cloud Logging의 로그를 검사하여 실제 오류를 찾으세요.
읽기 복제본을 만들 수 없음 - invalidFlagValue 오류 요청의 플래그 중 하나가 잘못되었습니다. 명시적으로 제공한 플래그 또는 기본값으로 설정된 플래그일 수 있습니다.

먼저 max_connections 플래그의 값이 기본 값보다 크거나 같은지 확인하세요.

max_connections 플래그가 적절하게 설정된 경우 Cloud Logging에서 로그를 검사하여 실제 오류를 확인하세요.

읽기 복제본을 만들 수 없음 - 알 수 없는 오류 로그 파일에 더 구체적인 오류가 있을 수 있습니다. Cloud Logging의 로그를 검사하여 실제 오류를 찾으세요.

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

디스크가 가득 참 복제본을 만드는 동안 기본 인스턴스 디스크 크기가 가득 찰 수 있습니다. 기본 인스턴스를 수정하여 더 큰 디스크 크기로 업그레이드합니다.
복제본 인스턴스가 너무 많은 메모리를 사용하고 있습니다. 복제본은 임시 메모리를 사용하여 자주 요청되는 읽기 작업을 캐시하므로 기본 인스턴스보다 더 많은 메모리를 사용할 수 있습니다.

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

복제가 중지됨 최대 스토리지 한도에 도달했고 스토리지 자동 증가가 사용 설정되지 않았습니다.

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

긴 복제 지연 시간이 지속적으로 발생함 쓰기 부하가 너무 높아 복제본이 처리할 수 없습니다. 복제본의 SQL 스레드가 IO 스레드를 따라잡을 수 없는 경우 복제 지연이 발생합니다. 일부 쿼리 또는 워크로드로 인해 특정 스키마에서 일시적이거나 영구적인 복제 지연이 발생할 수 있습니다. 복제 지연이 발생하는 일반적인 원인은 다음과 같습니다.
  • 복제본에 대한 쿼리의 속도가 느립니다. 문제를 찾아 수정하세요.
  • DELETE ... WHERE field < 50000000과 같은 쿼리의 경우 복제본에 다수의 업데이트가 쌓이게 되므로 행 기준 복제에서 복제 지연이 발생합니다.

가능한 솔루션은 다음과 같습니다.

  • 인스턴스를 수정하여 복제본 크기를 늘립니다.
  • 데이터베이스의 부하를 줄입니다.
  • 읽기 트래픽을 읽기 복제본으로 보냅니다.
  • 테이블 색인을 생성합니다.
  • 느린 쓰기 쿼리를 식별하고 수정합니다.
  • 복제본을 다시 만듭니다.
제한 시간으로 인해 복제본을 만들지 못했습니다. 기본 인스턴스에서 커밋되지 않은 장기 실행 트랜잭션으로 인해 읽기 복제본을 만들지 못할 수 있습니다.

실행 중인 모든 쿼리를 중지한 후 복제본을 다시 만듭니다.

다음 단계