Cloud SQL의 복제

복제는 Cloud SQL 인스턴스 또는 온프레미스 데이터베이스의 복사본을 만들고 복사본에 대한 작업을 오프로드하는 기능입니다.

소개

복제를 사용하는 주된 이유는 성능 저하 없이 데이터베이스의 데이터 사용량을 늘리기 위해서입니다. 그 외의 이유는 다음과 같습니다.

  • 리전 간 데이터 마이그레이션
  • 플랫폼 간 데이터 마이그레이션
  • 온프레미스 데이터베이스에서 Cloud SQL로 데이터 마이그레이션

또한 원본 인스턴스가 손상되면 복제본을 승격할 수 있습니다.

Cloud SQL 인스턴스의 경우 복제된 인스턴스를 기본 인스턴스라고 하고 복사본을 읽기 복제본이라고 합니다. 기본 인스턴스와 읽기 복제본 모두 Cloud SQL에 있습니다.

온프레미스 데이터베이스의 경우 복제 시나리오를 외부 서버에서 복제라고 합니다. 이 시나리오에서는 복제된 데이터베이스를 소스 데이터베이스 서버라고 하고, Cloud SQL에 있는 복사본을 Cloud SQL 복제본이라고 합니다. Cloud SQL의 소스 데이터베이스 서버를 나타내는 인스턴스(소스 표현 인스턴스라고 함)도 있습니다.

Cloud SQL은 다음 유형의 복제본을 지원합니다.

읽기 복제본

읽기 복제본을 사용하면 Cloud SQL 인스턴스에서 작업을 오프로드할 수 있습니다. 읽기 복제본은 기본 인스턴스의 정확한 복사본입니다. 기본 인스턴스의 데이터와 기타 변경사항은 거의 실시간으로 읽기 복제본에 업데이트됩니다.

읽기 복제본은 읽기 전용이며 여기에 쓸 수 없습니다. 읽기 복제본은 쿼리, 읽기 요청, 분석 트래픽을 처리하므로 기본 인스턴스의 부하가 줄어듭니다. 기본 인스턴스당 읽기 복제본을 최대 10개까지 만들 수 있습니다.

연결 이름과 IP 주소를 사용하여 복제본에 직접 연결합니다.

읽기 복제본을 만드는 방법에 대한 자세한 내용은 읽기 복제본 만들기를 참조하세요. 읽기 복제본을 관리하는 방법에 대한 자세한 내용은 읽기 복제본 관리를 참조하세요.

리전 간 읽기 복제본

리전 간 복제를 사용하면 기본 인스턴스와 다른 리전에 읽기 복제본을 만들 수 있습니다. 리전 내 복제본 만들기와 동일한 방식으로 리전 간 읽기 복제본을 만듭니다.

리전 간 복제본:

  • 복제본을 애플리케이션의 리전에 더 가깝게 만들어 읽기 성능을 개선합니다.
  • 리전 오류로부터 보호하도록 추가 재해 복구 기능을 제공합니다.
  • 다운타임을 최소화하면서 한 리전에서 다른 리전으로 데이터를 마이그레이션할 수 있습니다.

리전 간 복제본에 대한 자세한 내용은 리전 마이그레이션 또는 재해 복구용 복제본 승격을 참조하세요.

외부 읽기 복제본

외부 읽기 복제본은 Cloud SQL 기본 인스턴스에서 복제되는 외부 MySQL 인스턴스입니다. 예를 들어 Compute Engine에서 실행되는 MySQL 인스턴스는 외부 인스턴스로 간주됩니다.

외부 읽기 복제본에는 다음과 같은 제한사항이 있습니다.

  • 다른 클라우드 플랫폼에서 호스팅되는 MySQL 인스턴스로 복제하지 못할 수 있습니다. 다른 제공업체의 문서를 확인하세요. 예를 들어 replicate-ignore-db 구성 필드를 설정해야 하며, 이를 허용하지 않는 클라우드 제공업체는 지원되지 않습니다. 다른 필수 구성 필드는 외부 복제본 구성을 참조하세요.
  • 예를 들어 네트워크나 서버의 장애로 인해 복제가 몇 시간 동안 중단되면 복제본은 기본 인스턴스보다 뒤처지게 됩니다. 복제본이 기본 인스턴스와 다시 연결되어 다시 복제를 시작하면 기본 인스턴스를 따라잡습니다. 그러나 Cloud SQL 복제 로그가 보존되는 시간(백업 7개)보다 더 오랫동안 복제가 중단될 경우에는 복제본을 삭제하고 새 복제본을 만들어야 합니다.
  • 기본 인스턴스에서 외부 복제본으로 이동하는 데이터에는 네트워크 이그레스 요금이 청구됩니다. Cloud SQL 인스턴스 유형의 네트워크 이그레스 가격은 가격 책정 페이지를 참조하세요.

복제 사용 사례

다음은 복제 유형별 사용 사례입니다.

이름 기본 복제본 장점 및 사용 사례 추가 정보
읽기 복제본 Cloud SQL 인스턴스 Cloud SQL 인스턴스
  • 추가 읽기 용량
  • 애널리틱스 대상
리전 간 읽기 복제본 Cloud SQL 인스턴스 Cloud SQL 인스턴스
  • 추가 읽기 용량
  • 애널리틱스 대상
  • 추가 재해 복구 기능
  • 읽기 성능 향상
  • 리전 간 데이터 마이그레이션
외부 읽기 복제본 Cloud SQL 인스턴스 Cloud SQL 외부의 MySQL 인스턴스
  • 외부 연결 시 지연 시간 감소
  • 애널리틱스 대상
  • 다른 플랫폼으로의 이전 경로
외부 서버에서 복제 Cloud SQL 외부의 MySQL 인스턴스 MySQL용 Cloud SQL 인스턴스
  • Cloud SQL로의 마이그레이션 경로
  • Google Cloud Platform으로 데이터 복제
  • 애널리틱스 대상

읽기 복제본 생성을 위한 기본 요건

기본 Cloud SQL 인스턴스의 읽기 복제본을 만들려면 먼저 인스턴스가 다음 요구사항을 충족해야 합니다.

  • 자동 백업이 사용 설정되어 있어야 합니다.
  • point-in-time recovery를 사용 설정해야 하는 바이너리 로깅이 사용 설정되어 있어야 합니다. 이 로그의 영향에 대해 자세히 알아보세요.
  • 바이너리 로깅이 사용 설정된 후에 백업이 최소 한 개 이상 생성되어 있어야 합니다.

외부 복제본의 추가 요구사항:

  • 복제본의 MySQL 버전이 기본 인스턴스의 MySQL 버전과 동일하거나 높아야 합니다. 자세히 알아보기
  • 보안을 위해 기본 인스턴스에 SSL/TLS를 구성해야 합니다. 자세히 알아보기

바이너리 로깅 사용 설정의 영향

읽기 복제본을 지원하려면 point-in-time recovery를 사용 설정하여 기본 인스턴스에 바이너리 로깅을 사용 설정해야 합니다. 이렇게 하면 다음과 같은 영향이 있습니다.

  • 성능 오버헤드

    Cloud SQL에서는 sync_binlog=1innodb_support_xa=true라는 MySQL 플래그를 통해 행 기반 복제를 사용합니다. 따라서 쓰기 작업마다 추가 디스크 fsync가 필요하므로 성능이 저하됩니다.

  • 스토리지 오버헤드

    바이너리 로그의 스토리지에는 일반 데이터와 동일한 요금이 청구됩니다. 바이너리 로그는 가장 오래된 자동 백업의 유지 기간까지 자동으로 잘립니다. 현재 Cloud SQL은 최근 자동 백업 7개와 모든 주문형 백업을 보존합니다. 바이너리 로그 크기와 이에 따른 청구 금액은 워크로드에 따라 다릅니다. 예를 들어 쓰기 작업이 많은 워크로드는 읽기 작업이 많은 워크로드보다 더 많은 바이너리 로그 공간을 사용합니다.

    SHOW BINARY LOGS MySQL 명령어를 사용하여 바이너리 로그 크기를 확인할 수 있습니다.

    백업이 수행되면 로그가 데이터와 함께 백업에 저장됩니다.

  • 인스턴스 다시 시작

    바이너리 로깅을 사용 설정 또는 사용 중지하면 인스턴스가 다시 시작됩니다. 이때 기존 데이터베이스 연결이 끊어지므로 연결을 다시 설정해야 합니다.

읽기 복제본의 바이너리 로깅

  • 바이너리 로깅은 읽기 복제본 인스턴스에서 지원됩니다(MySQL 5.7 및 8.0만 해당). 복제본의 기본 인스턴스 이름 대신 복제본의 인스턴스 이름을 사용하여 기본 인스턴스와 동일한 API 명령어로 복제본에 바이너리 로깅을 사용 설정합니다.

    복제본 인스턴스(기본 인스턴스 아님)의 바이너리 로깅 내구성은 MySQL 서버가 바이너리 로그를 디스크에 동기화하는 빈도를 관리하는 sync_binlog 플래그를 사용하여 설정할 수 있습니다.

    기본 인스턴스에서 백업을 사용하지 않는 경우에도 복제본에서 바이너리 로깅을 사용 설정할 수 있습니다.

    이 값이 설정된 복제본을 독립형 서버로 승격하면 설정은 독립형 서버에서 안전한 값 1로 재설정됩니다.

청구

  • 읽기 복제본에는 표준 Cloud SQL 인스턴스와 동일한 요금이 청구됩니다. 데이터 복제에는 요금이 청구되지 않습니다.
  • 복제본은 항상 기본 인스턴스와 연결되어 있으므로 기본 인스턴스는 절대 비활성화되지 않습니다. 따라서 이 시나리오에서는 기본 인스턴스의 청구액이 증가할 수 있습니다. 자세히 알아보기
  • 외부 복제본의 경우 기본 인스턴스에서 외부 복제본으로 이동하는 데이터에는 네트워크 이그레스 요금이 청구됩니다. Cloud SQL 인스턴스 유형의 네트워크 이그레스 가격은 가격 책정 페이지를 참조하세요.
  • 네트워크 이그레스 가격 책정에 설명된 대로, Cloud SQL 인스턴스와 관련된 일반 비용 외에도 기본 리전에서 복제본으로 전송된 복제 로그에 리전 간 네트워크 이그레스 요금이 발생합니다.
  • 리전 간 읽기 복제본의 가격은 리전에서 새 인스턴스를 만드는 경우와 동일합니다. Cloud SQL 인스턴스 가격 책정을 참조하여 적절한 리전을 선택합니다.

Cloud SQL 읽기 복제본의 빠른 참조

주제 토론
고가용성 읽기 복제본은 고가용성을 제공하지 않습니다.
장애 조치 기본 인스턴스는 읽기 복제본에 장애 조치를 취할 수 없습니다. 읽기 복제본은 중단 시 어떤 방식으로도 장애 조치를 수행할 수 없습니다.
유지보수 기간 읽기 복제본에 유지보수 기간을 설정할 수 없습니다. 읽기 복제본은 기본 인스턴스와 유지보수 기간을 공유하지 않습니다. 유지보수는 읽기 복제본에서 언제든지 수행될 수 있습니다. 유지보수는 기본 인스턴스와 다른 시간에 읽기 복제본에서 수행됩니다.
중단 유발 업그레이드 읽기 복제본에는 가용성에 지장을 주는 업그레이드가 언제든지 진행될 수 있습니다.
성능 읽기 복제본을 만들 때 기본 인스턴스의 성능이나 가용성은 영향을 받지 않습니다.
여러 읽기 복제본 기본 인스턴스 하나에 읽기 복제본을 최대 10개까지 만들 수 있습니다.
부하 분산 Cloud SQL은 복제본 간의 부하 분산을 제공하지 않습니다. 연결 풀링을 사용하여 여러 복제본에 쿼리를 분산해야 합니다.
설정 루트 비밀번호와 사용자 테이블의 변경사항이 포함된 기본 인스턴스의 MySQL 설정은 복제본에 반영됩니다. 등급 변경사항은 복제본에 반영되지 않습니다.
병렬 복제 병렬 복제를 사용하여 성능을 향상시키는 방법은 병렬 복제 구성을 참조하세요.
머신 유형 읽기 복제본의 머신 유형(또는 등급)은 기본 인스턴스와 다를 수 있습니다.
사용자 테이블 복제본의 사용자 테이블을 변경할 수 없습니다. 모든 사용자 변경 작업은 기본 인스턴스에서 수행되어야 합니다.
백업 복제본에서 백업을 구성할 수 없습니다.
기본 인스턴스 복원 복제본이 있는 동안에는 복제본의 기본 인스턴스를 복원할 수 없습니다. 백업에서 인스턴스를 복원하거나 인스턴스에 point-in-time recovery를 수행하기 전에 복제본을 모두 승격하거나 삭제해야 합니다.
기본 인스턴스 삭제 기본 인스턴스를 삭제하려면 먼저 모든 읽기 복제본을 독립형 인스턴스로 승격하거나 삭제해야 합니다.
바이너리 로깅 중지 기본 인스턴스에서 바이너리 로그를 중지하려면 먼저 모든 읽기 복제본을 승격하거나 삭제해야 합니다.
복제본의 복제본 만들기 복제본의 복제본을 만들 수 없습니다.
복제본 중지 복제본을 stop할 수 없습니다. 복제본에 restart, delete 또는 disable replication을 할 수 있지만 기본 인스턴스처럼 중지할 수는 없습니다.

다음 단계