이 문서에서는 다운타임을 최소화하면서 메이저 버전 업그레이드 및 하드웨어 수정과 같은 데이터베이스 업데이트를 실행할 수 있는 Cloud SQL 블루-그린 배포에 대해 간략하게 설명합니다.
배포 의도 및 사용 사례
주 버전 업그레이드를 실행할 의도가 있거나 없는 경우 블루-그린 배포를 만들 수 있습니다.
- 의도에 따라 만들기 (메이저 버전 업그레이드): 데이터베이스 엔진을 최신 메이저 버전으로 업그레이드합니다. 배포를 만드는 동안 Cloud SQL은 메이저 버전 업그레이드 사전 검사 API를 실행하여 업그레이드 워크플로를 진행하기 전에 호환성을 확인합니다.
- 의도 없이 생성 (구성 또는 하드웨어 변경): 현재 데이터베이스 버전에서 수정사항을 스테이징합니다. 사용 사례에는 엔진 버전을 업그레이드하지 않고 머신 유형 (CPU/RAM 확장)을 변경하거나, 데이터베이스 플래그를 테스트하거나, 스토리지 수정사항을 평가하는 것이 포함됩니다.
블루-그린 배포 작동 방식
Cloud SQL 블루-그린 배포는 라이브 트래픽으로 전환하기 전에 임시 보조 환경에서 변경사항을 스테이징하여 자동화된 워크플로를 제공합니다.
블루-그린 배포 중에 Cloud SQL은 기존 프로덕션 환경 (블루)을 미러링하는 별도의 스테이징 환경(그린)을 만듭니다. 서비스는 파란색에서 녹색으로의 지속적인 논리 복제를 유지합니다. 프로덕션 트래픽에 영향을 주지 않고 녹색 환경에서 애플리케이션 호환성과 성능을 철저히 테스트할 수 있습니다. 준비가 되면 최소한의 애플리케이션 다운타임 (일반적으로 몇 초)으로 녹색 환경을 프로덕션 읽기 및 쓰기 상태에 할당하는 빠른 전환을 트리거합니다.
블루-그린 배포의 구성요소
블루-그린 배포는 다음 구성요소로 구성됩니다.
- 블루 환경 (소스): 애플리케이션 트래픽을 적극적으로 처리하는 기존 프로덕션 환경입니다. 소스 읽기 및 쓰기 인스턴스와 관련 구성으로 구성됩니다.
- 녹색 환경 (타겟): Cloud SQL에서 파란색 환경의 클론으로 생성한 임시 격리 스테이징 환경입니다. 그린 환경은 요청된 변경사항 (예: 최신 데이터베이스 버전)을 통합하고 지속적 복제를 사용하여 블루 환경과 동기화된 상태를 유지합니다.
Cloud SQL은
BLUE_INSTANCE_NAME-green-UNIQUE_ID패턴을 사용하여 녹색 스테이징 인스턴스의 이름을 자동으로 지정합니다(여기서 BLUE_INSTANCE_NAME은 최대 48자로 잘리고 UNIQUE_ID은 8자리 16진수 식별자임). 전환: 녹색 환경을 새로운 프로덕션 읽기 및 쓰기 인스턴스로 변환하는 계획된 사용자 시작 프로세스입니다. 전환 중에 Cloud SQL은 연결 엔드포인트를 스왑하므로 애플리케이션이 짧은 연결 드롭 (일반적으로 초 단위)으로 녹색 환경에 연결됩니다. 전환 중 예상 다운타임은 Cloud SQL 버전에 따라 다릅니다.
- Cloud SQL Enterprise Plus 버전: 전환 다운타임은 일반적으로 1초 미만입니다.
- Cloud SQL Enterprise 버전: 워크로드 및 복제 지연에 따라 전환 다운타임이 일반적으로 60초 미만입니다.
계획되지 않은 장애 조치 (중단 중에 자동으로 트리거됨)와 달리 전환은 계획된 변경 관리에 사용되는 제어된 작업입니다.
삭제: 블루-그린 배포 리소스를 삭제하는 프로세스입니다. 삭제 동작은 전환이 발생했는지에 따라 다릅니다.
- 전환 전: 배포를 삭제하면 녹색 스테이징 인스턴스와 배포 리소스가 삭제됩니다. 블루 프로덕션 인스턴스는 영향을 받지 않으며 계속 트래픽을 처리합니다.
- 전환 후: 배포를 삭제하면 배포 메타데이터가 삭제됩니다. 기본적으로 변환된 인스턴스 (녹색)와 파란색 인스턴스가 모두 유지됩니다. 선택적으로 파란색 인스턴스를 삭제하여 지속적인 요금이 청구되지 않도록 할 수 있습니다.
배포 수명 주기 및 상태
블루-그린 배포는 다음과 같은 네 가지 수명 주기 단계를 거칩니다.
- 생성 및 스테이징 (
PROVISIONING): 블루-그린 배포를 요청하면 Cloud SQL에서 블루 프로덕션 환경을 클론하는 임시 그린 대상 인스턴스를 프로비저닝합니다. 메이저 버전 업그레이드의 경우 Cloud SQL은 업그레이드 워크플로를 진행하기 전에 메이저 버전 업그레이드 사전 검사 API를 실행하여 데이터베이스 호환성도 검증합니다. Cloud SQL은 요청된 업그레이드 또는 구성 변경사항을 그린 환경에 적용하고 블루에서 그린으로의 연속 논리 복제를 시작합니다. - 스테이징 확인 (
SWITCHOVER_READY또는SWITCHOVER_NOT_READY): 초기 복제가 완료되면 배포가SWITCHOVER_READY(복제가 중단되거나 오류가 발생한 경우SWITCHOVER_NOT_READY) 상태가 됩니다. 블루는 계속해서 라이브 프로덕션 트래픽을 처리합니다. 녹색에 연결하여 유효성 검사 테스트를 실행하고, 애플리케이션 호환성을 확인하고, 쿼리 성능을 테스트합니다. - 전환 실행 (
SWITCHOVER_IN_PROGRESS또는SWITCHOVER_COMPLETED): 전환을 트리거하면 Cloud SQL이 안전 사전 검사를 실행하고, 연결 엔드포인트를 스왑하고, 녹색 인스턴스를 활성 프로덕션 읽기 및 쓰기 인스턴스(SWITCHOVER_COMPLETED)로 설정하고, 파란색 인스턴스를 독립형 읽기 및 쓰기 인스턴스로 전환합니다. 활성 읽기 및 쓰기 작업은 녹색 인스턴스로만 라우팅되고 파란색에서 녹색으로의 논리적 복제가 종료됩니다. 자세한 내용은 블루-그린 배포 전환 실행을 참고하세요. 삭제 (
DELETING): 테스트를 완료하거나 프로덕션 작업을 확인한 후 배포 리소스를 삭제합니다. 삭제 동작은 배포 상태에 따라 다릅니다.- 전환 전 (취소): 배포를 진행하지 않기로 결정하거나 인증 문제가 발생하는 경우 배포를 삭제하면 녹색 스테이징 인스턴스가 삭제되고 배포 메타데이터가 삭제됩니다. 원본 파란색 프로덕션 인스턴스는 그대로 유지되며 중단 없이 트래픽을 계속 처리합니다.
- 전환 후 (정리): 전환이 완료되고 새 프로덕션 인스턴스에서 작업을 확인한 후 배포를 삭제하면 배포 메타데이터가 삭제됩니다. 기본적으로 새 프로덕션 인스턴스(녹색)와 파란색 인스턴스는 독립형 읽기 및 쓰기 인스턴스로 유지됩니다. 원하는 경우
--delete-old-source플래그를 지정하여 파란색 인스턴스를 영구적으로 삭제하고 요금이 청구되지 않도록 할 수 있습니다.
자세한 내용은 블루-그린 배포 삭제를 참고하세요.
배포 리소스 상태
블루-그린 배포를 검사하면 state 필드에 현재 수명 주기 상태가 표시됩니다.
PROVISIONING: 배포가 생성되고 있습니다. 메이저 버전 업그레이드의 경우 Cloud SQL은 사전 검사 API를 실행하여 계속 진행하기 전에 호환성을 검증합니다. Cloud SQL은 녹색 환경을 프로비저닝하고, 요청된 업그레이드를 적용하고, 지속적인 논리 복제를 설정합니다.SWITCHOVER_READY: 녹색 환경이 프로비저닝되고, 파란색에서 녹색으로의 논리적 복제가 정상이며, 배포가 전환 준비가 되었습니다.SWITCHOVER_NOT_READY: 배포가 프로비저닝되었지만 전환을 시작할 수 없습니다. 논리적 복제가 중단되거나 중지된 경우, 초기 복제가 완료되지 않은 경우 또는 페어링된 노드에서 오류가 발생한 경우에 이러한 문제가 발생합니다.SWITCHOVER_IN_PROGRESS: 전환 작업이 활성 상태로 실행 중입니다. Cloud SQL이 연결 엔드포인트를 스왑하고 녹색 인스턴스를 활성 프로덕션 읽기 및 쓰기 인스턴스로 변환합니다.SWITCHOVER_COMPLETED: 전환 작업이 성공적으로 완료되었습니다. 이제 녹색 인스턴스가 활성 프로덕션 읽기 및 쓰기 인스턴스가 되고 파란색 인스턴스는 독립형 읽기 및 쓰기 인스턴스로 유지됩니다.DELETING: 배포가 삭제되고 있습니다. 전환 전에 삭제하면 Cloud SQL이 녹색 스테이징 인스턴스를 삭제하고 배포 메타데이터를 삭제합니다. 전환 후 삭제하는 경우 Cloud SQL은 배포 메타데이터를 삭제하고--delete-old-source플래그가 지정된 경우 파란색 인스턴스를 선택적으로 삭제합니다.STATE_UNSPECIFIED: 배포 상태를 알 수 없습니다.
전환 상태 및 준비 상태
전환 준비 상태는 데이터 손실이나 장기 다운타임으로부터 프로덕션 데이터베이스를 보호하기 위해 복제 상태와 노드 상태에 따라 달라집니다.
- 복제 상태 및 지연 시간: 블루와 그린 간의 논리적 복제가 중단되거나 일시중지되거나 실패하면 배포 상태가
SWITCHOVER_NOT_READY로 전환됩니다. 배포state및 설명 출력은 복제 지연을 보고하지 않으며 Cloud SQL은 배포 상태를 결정할 때 복제 지연을 사전 검사로 평가하지 않습니다. 하지만 전환이 시작될 때 복제 지연이 너무 높으면 전환 작업이 실패합니다. 전환을 성공적으로 수행하려면 전환을 시작하기 전에 복제 지연 시간이 최소화되어야 합니다. Cloud Monitoring에서 (Cloud SQL 측정항목 목록에서replica_lag와 같은 측정항목을 확인하여) 또는 녹색 인스턴스에서 직접 복제 지연 시간을 모니터링할 수 있습니다. 자세한 내용은 복제 지연 시간 모니터링을 참고하세요. - 페어링된 노드 상태:
deploymentMappings아래에서 페어링된 각 노드는 자체 노드 상태 (예:PROVISIONED,UPGRADED,UPGRADE_FAILED,SWITCHOVER_IN_PROGRESS,SWITCHOVER_SUCCEEDED또는SWITCHOVER_FAILED)를 보고합니다. 페어링된 노드에 오류 (UPGRADE_FAILED또는SWITCHOVER_FAILED)가 발생하면 전체 배포 상태가SWITCHOVER_NOT_READY로 전환됩니다. 전환이 실패하면 라우팅은 데이터 손실 없이 파란색 인스턴스에 유지됩니다. - 전환 준비 상태 문제 해결: 배포에서
SWITCHOVER_NOT_READY를 보고하는 경우errorDetail필드를 확인하여 복제 또는 노드 오류를 진단합니다. 전환을 시작하기 전에 복제 지연이 최소화되었는지 확인하고 파란색 인스턴스에서 활성 일괄 DDL 작업 또는 장기 실행 쓰기 트랜잭션이 완료되었는지 확인합니다.
제한사항
블루-그린 배포를 사용하기 전에 다음 제한사항을 검토하세요.
- 지원되는 엔진 및 버전: MySQL 5.7 이상의 MySQL용 Cloud SQL 인스턴스는 구성 스테이징 (의도 없이 생성)이 지원됩니다. MySQL 8.0에서 8.4로의 메이저 버전 업그레이드 타겟 (의도와 함께 생성)이 지원됩니다. MySQL 8.0.18은 블루-그린 배포에서 지원되지 않습니다.
- 지원되지 않는 데이터베이스 엔진: PostgreSQL용 Cloud SQL 및 SQL Server용 Cloud SQL은 지원되지 않습니다.
- 읽기 복제본이 있는 인스턴스: 블루-그린 배포는 읽기 복제본이 있는 인스턴스를 지원하지 않습니다.
- 지원되지 않는 네트워크 구성: 블루-그린 배포는 Private Service Connect 아웃바운드 구성을 지원하지 않습니다.
- IAM 그룹 인증: 블루-그린 배포는 MySQL IAM 그룹 인증과 호환되지 않으며 전환 실패를 일으킬 수 있습니다.
- 네트워크 아키텍처 요구사항: Cloud SQL 인스턴스에서 새 네트워크 아키텍처를 사용해야 합니다. 이전 네트워크 아키텍처를 사용하는 인스턴스는 지원되지 않습니다.
- 바이너리 로깅 요구사항: MySQL 인스턴스에는 녹색 환경에 대한 지속적인 논리적 복제를 지원하기 위해 자동 백업 및 바이너리 로깅이 사용 설정되어 있어야 합니다.
- 유지보수 버전 요구사항: 블루-그린 배포를 만들기 전에 블루 소스 인스턴스가 최신 유지보수 버전을 실행해야 합니다. 인스턴스 유지보수 버전을 확인하거나 업데이트하려면 셀프 서비스 유지보수 실행을 참고하세요.
- 리소스 가용성: 녹색 스테이징 인스턴스 생성 및 전환 후 파란색 인스턴스 생성을 비롯한 블루-그린 배포 워크플로 중의 인스턴스 프로비저닝은 선택한 리전 또는 영역의 컴퓨팅 리소스 제약의 영향을 받을 수 있습니다.
- 계획되지 않은 서비스 중단 및 장애 조치: 블루-그린 배포 전환은 정상적인
RUNNING파란색 소스 인스턴스가 필요한 계획된 작업입니다. 녹색 스테이징 인스턴스는 특수 읽기 복제본으로 작동합니다. 표준 읽기 복제본과 마찬가지로 녹색 인스턴스는 소스 인스턴스의 계획되지 않은 중단 시 장애 조치 대상으로 사용할 수 없습니다. 자동화된 서비스 중단 복구를 위해 고가용성으로 인스턴스를 구성하거나 재해 복구 (DR) 복제본을 사용하세요.
결제 및 가격 책정
블루-그린 배포 사용에 대한 추가 요금은 없습니다. 하지만 배포 중에 완전한 병렬 그린 환경이 프로비저닝되므로 두 환경이 모두 존재하는 전체 기간 동안 블루 및 그린 인스턴스 모두에 표준 요금이 청구됩니다.
불필요한 요금이 청구되지 않도록 배포와 연결된 인스턴스를 삭제하세요.
- 전환 전: 배포를 취소하는 경우 배포를 삭제하여 녹색 스테이징 인스턴스를 삭제하고 요금 청구를 중지합니다.
- 전환 후: 새 프로덕션 인스턴스를 확인한 후 배포를 삭제하고
--delete-old-source플래그를 지정하여 파란색 인스턴스를 영구적으로 삭제합니다. 파란색 인스턴스를 삭제하지 않으면 두 인스턴스 모두에 대한 요금이 계속 청구됩니다.