복제는 Cloud SQL 인스턴스의 복사본을 만들고 복사본에 대한 작업을 오프로드하는 기능입니다.
소개
복제를 사용하는 주된 이유는 성능 저하 없이 데이터베이스의 데이터 사용량을 늘리기 위해서입니다.
복제를 하는 다른 이유에는 리전 간 데이터 마이그레이션이 포함됩니다.
또한 원본 인스턴스가 손상되면 복제본을 독립형 인스턴스로 승격할 수 있습니다. 이 경우 기존 복제본은 해당 인스턴스를 기본 인스턴스로 간주하지 않습니다.
Cloud SQL 인스턴스의 경우 복제된 인스턴스를 기본 인스턴스라고 하고 복사본을 읽기 복제본이라고 합니다. 기본 인스턴스와 읽기 복제본 모두 Cloud SQL에 있습니다.
첫 번째 복제본이 생성되면 다음을 수행합니다.
- 기본 인스턴스가 기본 인스턴스에 있는 모든 데이터베이스의 전체 복구 모델로 설정됩니다.
임시 디스크가 생성되고 전체 백업이 수행되어 임시 디스크에 저장됩니다. 복제본 생성 프로세스가 완료되면 임시 디스크가 삭제됩니다.
첫 번째 복제본 생성 기간 중에 사용자가 단순 복구 모델로 전환하면 복제본 생성이 실패합니다.
다음은 복제본이 생성된 후 기본 인스턴스에 추가된 데이터베이스에 적용됩니다.
- 데이터베이스는 가용성 그룹에 자동으로 추가되고 자동 시드를 사용하여 복제본에 채워집니다.
- 복제본을 만들 때마다 기본 인스턴스에 있는 데이터베이스의 전체(전체 복구 모델) 백업을 호출합니다. 복제본을 만든 후에 생성된 로그인 및 서버 객체는 복제되지 않습니다.
Cloud SQL은 다음 유형의 복제본을 지원합니다.
커넥터 적용을 사용하면 Cloud SQL 인증 프록시 또는 Cloud SQL 언어 커넥터만 사용하여 Cloud SQL 인스턴스에 연결하도록 적용할 수 있습니다. 커넥터 적용을 사용하면 Cloud SQL에서 데이터베이스에 대한 직접 연결을 거부합니다. 커넥터 적용이 사용 설정된 인스턴스의 읽기 복제본은 만들 수 없습니다. 마찬가지로 인스턴스에 읽기 복제본이 있는 경우 인스턴스에 커넥터 적용을 사용 설정할 수 없습니다.
Cloud SQL에서는 두 외부 서버 간 복제를 지원하지 않습니다.
읽기 복제본
읽기 복제본을 사용하면 Cloud SQL 인스턴스에서 작업을 오프로드할 수 있습니다. 읽기 복제본은 기본 인스턴스의 정확한 복사본입니다. 기본 인스턴스의 데이터와 기타 변경사항은 거의 실시간으로 읽기 복제본에 업데이트됩니다.
읽기 복제본은 읽기 전용이며 여기에 쓸 수 없습니다. 읽기 복제본은 쿼리, 읽기 요청, 분석 트래픽을 처리하므로 기본 인스턴스의 부하가 줄어듭니다. 기본 인스턴스당 읽기 복제본을 최대 8개까지 만들 수 있습니다.
연결 이름과 IP 주소를 사용하여 복제본에 직접 연결합니다. 비공개 IP 주소를 사용하여 복제본에 연결하는 경우 연결이 기본 인스턴스에서 상속되기 때문에 복제본의 추가 VPC 비공개 연결을 만들 필요가 없습니다.
읽기 복제본을 만드는 방법에 대한 자세한 내용은 읽기 복제본 만들기를 참조하세요. 읽기 복제본을 관리하는 방법에 대한 자세한 내용은 읽기 복제본 관리를 참조하세요.
기본 인스턴스에서 HA를 사용할 때는 기본 인스턴스와 다른 영역에 읽기 복제본을 배치하는 것이 좋습니다. 이렇게 하면 기본 인스턴스가 포함된 영역에 중단이 발생해도 읽기 복제본이 계속 작동합니다. 자세한 내용은 고가용성 개요를 참조하세요.
적절한 머신 유형 선택
읽기 복제본의 머신 유형은 기본 머신과 다를 수 있습니다. 특히 기본 인스턴스가 작은 경우 복제본 인스턴스의 크기가 워크로드에 맞게 올바르게 조정되었는지 확인하기 위해 CPU 및 메모리 사용량과 같은 인스턴스의 측정항목을 모니터링해야 합니다. 크기가 작은 복제본 인스턴스는 잦은 메모리 부족(OOM) 이벤트와 같은 성능 저하가 발생하기 쉽습니다.
리전 간 읽기 복제본
리전 간 복제를 사용하면 기본 인스턴스와 다른 리전에 읽기 복제본을 만들 수 있습니다. 리전 내 복제본 만들기와 동일한 방식으로 리전 간 읽기 복제본을 만듭니다.
SQL Server 읽기 복제본의 경우 복제본이 기본 복제본과 동일한 가상 네트워크에 있거나 공개 IP를 사용하여 통신한다고 가정합니다.리전 간 복제본:
- 복제본을 애플리케이션의 리전에 더 가깝게 만들어 읽기 성능을 개선합니다.
- 리전 오류로부터 보호하도록 추가 재해 복구 기능을 제공합니다.
- 한 리전에서 다른 리전으로 데이터를 마이그레이션할 수 있습니다.
리전 간 복제본에 대한 자세한 내용은 리전 마이그레이션 또는 재해 복구용 복제본 승격을 참조하세요.
연쇄 읽기 복제본
연쇄 복제를 사용하면 같은 리전이나 다른 리전의 다른 읽기 복제본 아래에 읽기 복제본을 만들 수 있습니다. 연쇄 복제본은 분산 가용성 그룹을 통해 구현됩니다. 연쇄 복제본의 몇 가지 사용 사례는 다음과 같습니다.
- 재해 복구: 읽기 복제본의 연쇄 계층 구조를 사용하여 기본 인스턴스와 읽기 복제본의 토폴로지를 시뮬레이션할 수 있습니다. 서비스 중단 중에 선택한 읽기 복제본이 기본 인스턴스로 승격되고 새 기본 인스턴스 아래에 있는 읽기 복제본은 계속 복제되어 사용할 준비가 됩니다. 이전 기본 인스턴스는 사용 가능해지면 새 기본 인스턴스의 보조 인스턴스가 되며 전환을 사용하여 복구되면 이전 기본 인스턴스로 다시 전환될 수 있습니다. 재해 복구에 연쇄 복제본을 사용하는 방법에 대한 자세한 내용은 재해 복구 정보를 참조하세요.
- 성능 개선: 복제 작업을 여러 읽기 복제본으로 오프로드하여 기본 인스턴스의 부담을 줄입니다.
- 읽기 확장: 읽기 로드를 공유할 복제본이 더 있을 수 있습니다.
- 비용 절감: 다른 리전의 리전 간 복제와 함께 하나의 연쇄 복제본을 사용하여 네트워킹 비용을 줄일 수 있습니다.
용어
- 연쇄 가능한 복제본: SQL 서버용 Cloud SQL의 고급 재해 복구(DR)에서 전환 및 복제본 장애 조치 작업에 사용할 수 있는 리전 간 읽기 복제본입니다.
- 연쇄 복제본: 자체 복제본을 가질 수 있는 읽기 복제본입니다.
- 수준: 연쇄 복제본 계층 구조에서 복제본 수준을 만들 수 있습니다. 예를 들어 한 인스턴스에 4개의 복제본을 추가하면 해당 4개의 복제본은 동일한 수준에 있게 됩니다.
- 동위 인스턴스: 동일한 기본 인스턴스에서 복제되는 여러 복제본입니다. 동위 요소는 복제본 계층 구조에서 동일한 수준에 있습니다. 복제본에는 공식적으로 8개의 동위 요소가 있을 수 있습니다.
- 리프 복제본: 자체 복제본이 없는 읽기 복제본입니다. 다중 수준 복제 계층 구조에서 리프 복제본은 마지막 수준입니다.
- 승격 계층 구조의 모든 수준에서 복제본을 기본 인스턴스로 변환하는 작업입니다. 승격되면 복제본의 연쇄 복제본 계층 구조가 유지됩니다.
연쇄 복제본 구성
연쇄 복제본을 사용하면 기존 복제본에 읽기 복제본을 추가할 수 있습니다. 기본 인스턴스를 포함하여 최대 4개 수준의 복제본을 추가할 수 있습니다. 복제본이 연쇄 복제본 계층 구조의 맨 위로 승격되면 기본 인스턴스가 되고 해당 연쇄 복제본은 계속 복제됩니다.
분산 가용성 그룹을 구성하는 방법에 대한 자세한 내용은 Always On 분산 가용성 그룹 구성을 참조하세요.
제한사항
- 하위 수준에 복제본이 있는 복제본은 삭제할 수 없습니다. 복제본을 삭제하려면 리프 복제본부터 시작하여 계층 구조를 따라 위로 이동해야 합니다.
- 순환 리전 종속 항목은 지원되지 않습니다. 연쇄 복제본의 복제본을 기본 인스턴스와 동일한 리전에 위치시키려면 연쇄 복제본도 동일한 리전에 있어야 합니다.
- 기본 인스턴스의 리전과 다른 리전에 연쇄 가능한 복제본을 만들어야 합니다. 그러면 연쇄 가능한 복제본과 동일한 리전에 연쇄 복제본을 만들 수 있습니다.
복제 사용 사례
다음은 복제 유형별 사용 사례입니다.
이름 | 기본 | 복제본 | 장점 및 사용 사례 | 추가 정보 |
---|---|---|---|---|
읽기 복제본 | Cloud SQL 인스턴스 | Cloud SQL 인스턴스 |
|
|
리전 간 읽기 복제본 | Cloud SQL 인스턴스 | Cloud SQL 인스턴스 |
|
|
SQL Server 복제 | Cloud SQL 외부의 인스턴스 | SQL Server용 Cloud SQL 인스턴스 |
|
결제
- 읽기 복제본에는 표준 Cloud SQL 인스턴스와 동일한 요금이 청구됩니다. 데이터 복제에는 요금이 청구되지 않습니다.
- 리전 간 읽기 복제본의 가격은 리전에서 새 Cloud SQL 인스턴스를 만드는 경우와 동일합니다. Cloud SQL 인스턴스 가격 책정을 참조하여 적절한 리전을 선택합니다. 네트워크 이그레스 가격 책정의 설명대로 인스턴스와 관련된 일반 비용 외에도 리전 간 복제본에는 기본 인스턴스에서 복제본 인스턴스로 전송된 복제 로그에 대한 리전 간 데이터 전송 요금이 발생합니다.
Cloud SQL 읽기 복제본의 빠른 참조
주제 | 토론 |
---|---|
백업 | 복제본에서 백업을 구성할 수 없습니다. |
코어 및 메모리 | 읽기 복제본의 코어 개수 및 메모리 양은 기본 인스턴스와 다를 수 있습니다. |
기본 인스턴스 삭제 | 기본 인스턴스를 삭제하려면 기본 인스턴스의 모든 읽기 복제본을 독립형 인스턴스로 승격하거나 삭제해야 합니다. |
복제본 삭제 | 복제본을 삭제해도 기본 인스턴스의 상태에는 영향을 주지 않습니다. |
복제된 데이터베이스 삭제 | Google Cloud 콘솔 또는 gcloud 명령어를 사용하여 복제된 SQL Server 데이터베이스를 삭제할 수 있으며 삭제는 자동으로 복제본에 전파됩니다. T-SQL 명령어를 사용하면 복제된 SQL Server 데이터베이스를 삭제할 수 없습니다. |
장애 조치 | 기본 인스턴스는 복제본이 DR 복제본인 경우에만 복제본으로 장애 조치할 수 있습니다. 읽기 복제본은 중단 시 어떤 방식으로도 장애 조치를 수행할 수 없습니다. |
부하 분산 | Cloud SQL은 복제본 간의 부하 분산을 제공하지 않습니다. |
유지보수 기간 | 읽기 복제본은 기본 인스턴스와 유지보수 기간을 공유합니다. 복제본은 유지보수 기간, 재예약, 유지보수 거부 기간을 비롯한 기본 인스턴스의 유지보수 설정을 따릅니다. 유지보수 중에 Cloud SQL은 기본 인스턴스를 업데이트하기 전에 모든 읽기 복제본을 먼저 업데이트합니다. |
여러 읽기 복제본 | 기본 인스턴스 하나에 읽기 복제본을 최대 8개까지 만들 수 있습니다. |
비공개 IP | 비공개 IP 주소를 사용하여 복제본에 연결하는 경우 기본 인스턴스에서 상속되기 때문에 복제본의 추가 VPC 비공개 연결을 만들 필요가 없습니다. |
기본 인스턴스 복원 | 복제본이 있는 동안에는 복제본의 기본 인스턴스를 복원할 수 없습니다. 백업에서 인스턴스를 복원하거나 인스턴스에 point-in-time recovery를 수행하기 전에 복제본을 모두 승격하거나 삭제해야 합니다. |
설정 | 인스턴스에 액세스할 수 있는 사용자 데이터 변경사항을 포함하여 기본 인스턴스의 설정은 복제본에 반영됩니다. |
복제본 중지 | 복제본을 stop 할 수 없습니다. 복제본에 restart , delete 을 할 수 있지만 기본 인스턴스처럼 중지할 수는 없습니다. |
복제본 업그레이드 | 읽기 복제본에는 가용성에 지장을 주는 업그레이드가 언제든지 진행될 수 있습니다. |
사용자 테이블 | 복제본은 변경할 수 없습니다. 모든 사용자 변경 작업은 기본 인스턴스에서 수행되어야 합니다. |
제한사항
이 기능은 다음 버전의 SQL Server용 Cloud SQL에만 적용됩니다.
- SQL Server 2017 Enterprise
- SQL Server 2019 Enterprise
- SQL Server 2022 Enterprise
로그인은 복제본에 반영되지 않습니다.
T-SQL 또는 SQL Server Management Studio를 사용하여 복제본을 모니터링해야 합니다.
데이터베이스를 삭제하기 전에 데이터베이스 연결을 종료해야 합니다.
복제본을 만들 때 기본 인스턴스에는 단일 사용자 모드의 데이터베이스를 포함할 수 없습니다. 그렇지 않으면 복제본 생성에 실패합니다.
다음 단계
- 읽기 복제본 생성 방법 알아보기
- 고가용성 인스턴스 구성 방법 알아보기