복제 구성 요구사항 및 팁

이 페이지에서는 읽기 복제본외부 복제본 작업의 요구사항 및 권장사항을 설명합니다.

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

읽기 복제본

읽기 복제본은 Cloud SQL 기본 인스턴스에서 복제되는 Cloud SQL 인스턴스입니다. 읽기 복제본은 읽기 전용이므로 읽게 복제본에 쓸 수 없습니다. 복제본을 사용하면 기본 인스턴스의 읽기 요청과 분석 트래픽을 오프로드할 수 있습니다.

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

읽기 복제본 기본 인스턴스 요구사항

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

  • 바이너리 로깅이 사용 설정되어 있어야 합니다. 자세히 알아보기
  • 바이너리 로깅이 사용 설정된 후에 백업이 최소 한 개 이상 생성되어 있어야 합니다.

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

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

결제

  • 읽기 복제본에는 표준 Cloud SQL 인스턴스와 동일한 요금이 청구됩니다. 데이터 복제에는 요금이 청구되지 않습니다.
  • 복제본은 항상 기본 인스턴스와 연결되어 있으므로 기본 인스턴스는 절대 비활성화되지 않습니다. 따라서 이 시나리오에서는 기본 인스턴스의 청구액이 증가할 수 있습니다. 자세히 알아보기

외부 읽기 복제본

외부 읽기 복제본은 Cloud SQL 기본 인스턴스에서 복제되는 외부 MySQL 인스턴스입니다.

외부 읽기 복제본을 구성하는 방법에 대한 자세한 내용은 외부 복제본 구성을 참조하세요.

외부 읽기 복제본 구성 요구사항

기본 인스턴스 요구사항:

기본 인스턴스에는 바이너리 로깅이 사용 설정되어 있어야 합니다. 자세히 알아보기

외부 복제본 요구사항:

복제본의 MySQL 버전이 기본 인스턴스의 MySQL 버전과 동일하거나 높아야 합니다. 자세히 알아보기

외부 복제본 구성 정보

외부 복제본 구성에는 다음이 적용됩니다.

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

바이너리 로깅 영향

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

  • 성능 오버헤드

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

  • 저장소 오버헤드

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

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

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

  • 인스턴스 다시 시작

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

문제 해결

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

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

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

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

문제 원인

기본 인스턴스에는 적어도 일주일 동안의 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과 같은 쿼리의 경우 복제본에 다수의 업데이트가 쌓이게 되므로 행 기준 복제에서 복제 지연이 발생합니다.

해결 방법

인스턴스를 수정하여 복제본의 크기를 늘리거나 데이터베이스의 부하를 줄입니다.

다음 단계