기존 Cloud SQL 인스턴스를 그대로 사용하여 간편하게 데이터베이스 메이저 버전 업그레이드(In-place major version upgrade)
Neha Bhatnagar
Database Specialist Customer Engineer, Google
*본 아티클의 원문은 2024년 1월 13일 Google Cloud 블로그(영문)에 게재되었습니다.
Google Cloud의 완전 관리형 관계형 데이터베이스 서비스인 Cloud SQL을 사용하면 효과적으로 데이터베이스 작업을 간소화하고 혁신에 집중할 수 있습니다. Cloud SQL은 확장성과 가용성이 뛰어난 강력하고 안전한 관계형 데이터베이스 플랫폼을 제공하는 동시에 관리 작업을 간소화하고 운영 비용을 절감해 주는 등 데이터베이스 관리의 복잡성을 해결해 줍니다.
개방적인 완전 관리형 데이터베이스 서비스인 Cloud SQL은 다양한 버전의 데이터베이스 엔진을 지원하므로 사용자는 요구사항에 가장 적합한 MySQL, PostgreSQL 또는 Microsoft SQL Server 버전을 선택할 수 있습니다. Cloud SQL은 이전 버전의 데이터베이스 엔진을 유지보수할 수 있는 유연성을 제공하기도 하지만, 최신 버전으로 최신 상태를 유지하는 데 상당히 유용합니다. 최신 버전은 성능 향상, 보안 업그레이드, 확장된 기능 집합을 제공하여 애플리케이션을 최적화하고 데이터를 보호할 수 있도록 지원합니다. 이러한 Cloud SQL의 이점을 극대화하고 애플리케이션의 장기적인 안정성과 보안을 보장하려면 지원 종료(EOL)된 데이터베이스 엔진 버전에서 탈피하는 것이 중요합니다.
이 블로그에서는 Cloud SQL의 인플레이스(in-place) 메이저 버전 업그레이드 기능을 활용해 최신 버전의 MySQL 및 PostgreSQL로 전환할 경우의 주요 이점과 권장사항에 대해 알아보겠습니다. 또한 기본 및 복제본 인스턴스에서 성공적으로 메이저 버전 업그레이드를 수행하기 위한 전략에 대해서도 살펴보겠습니다.
Cloud SQL의 인플레이스(in-place) 메이저 버전 업그레이드 기능 소개
Cloud SQL의 인플레이스 메이저 버전 업그레이드 기능은 MySQL 또는 PostgreSQL 데이터베이스 인스턴스를 Cloud SQL 플랫폼 내에서 바로 최신 메이저 버전으로 업그레이드(즉, 인플레이스 업그레이드)할 수 있는 기본 제공 기능입니다. 이 기능을 사용하면 수동 데이터 마이그레이션과 복잡한 구성 변경이 필요 없고 이와 관련된 긴 다운타임도 사라집니다. 이 접근 방식의 가장 큰 이점 중 하나는 업그레이드 후에도 현재 인스턴스의 이름, IP 주소, 기타 설정을 유지할 수 있다는 것입니다.
메이저 버전 업그레이드 시 철저히 계획하고 테스트하는 것이 좋습니다. 테스트 전략 중 하나는 현재 기본 인스턴스를 클론하고 해당 클론에서 메이저 버전 업그레이드를 수행하는 것입니다. 문제를 미리 해결하면 안심하고 프로덕션 업그레이드를 수행할 수 있습니다.
Cloud SQL의 메이저 버전 업그레이드 기능은 MySQL와 PostgreSQL 사이에 약간의 차이가 있습니다. 자세한 내용은 아래의 전용 섹션을 확인하세요.
MySQL용 Cloud SQL
2023년 10월에 MySQL Community 버전 5.7이 지원 종료되었습니다. 아직 MySQL 5.6 및 5.7을 실행 중이라면 차세대 쿼리 기능, 개선된 성능, 향상된 보안을 제공하는 MySQL 8.0으로 업그레이드하시기 바랍니다. 예를 들면 다음과 같은 이점을 얻을 수 있습니다.
- MySQL 8.0의 인스턴트 DDL 덕분에 테이블 ALTER 속도가 획기적으로 개선되고 동시 DML 변경도 가능합니다.
- InnoDB는 읽기-쓰기, IO-바운드, 높은 경합 시나리오 등 다양한 워크로드에 최적화되었습니다.
- SKIP LOCKED 및 NOWAIT 옵션으로 잠금 대기를 방지합니다.
- MySQL 8.0의 윈도우 함수가 쿼리 로직을 간소화하고 CTE가 재사용 가능한 임시 결과 집합을 지원합니다.
- MySQL 8.0은 JSON 기능을 향상하고 보안 기능을 추가적으로 더욱 강화해 줍니다.
- 복제 성능이 크게 개선되어 데이터 동기화 속도가 빨라집니다. 병렬 복제가 기본 설정이됩니다.
- 내림차순 색인, 표시되지 않는 색인과 같은 새로운 기능으로 성능이 더욱 향상되었습니다.
자세한 내용은 여기를 클릭하세요.
MySQL 8.0으로 업그레이드하는 방법
Cloud SQL의 메이저 버전 업그레이드 기능을 활용하면 8.0으로 업그레이드할 수 있습니다. 이미 워크플로에 사전 점검이 통합되어 있지만 이를 별도로 실행할 수 있는 옵션도 제공됩니다. MySQL 셸에서 Upgrade Checker Utility를 사용해 사전 점검을 실행할 수 있습니다. 업그레이드 전에 현재 사용 중인 기본/복제본 토폴로지를 검토하고 이에 따라 계획을 세우세요.
메이저 버전 업그레이드를 사용한 업그레이드: 읽기 복제본이 없는 기본 인스턴스인 경우 Cloud SQL의 메이저 버전 업그레이드 기능을 통해 인스턴스를 인플레이스 업그레이드할 수 있습니다. MySQL에서는 낮은 메이저 버전에서 높은 메이저 버전으로의 복제가 가능합니다. 기본 인스턴스를 업그레이드하기 전에 읽기 복제본을 업그레이드할 수 있으므로 이 기능은 읽기 복제본이 있는 경우에 유용합니다.
아래 다이어그램은 메이저 버전 업그레이드의 단계를 보여줍니다.
참고: 이 시나리오에서는 IP 주소가 유지됩니다.
연쇄 복제본을 사용한 업그레이드: 아래 시나리오의 메이저 버전 업그레이드와 함께 연쇄 복제본을 활용할 수 있습니다. 이 접근 방식을 통해 가능한 작업은 다음과 같습니다.
- 전체 토폴로지를 그대로 유지한 채 이전 기본 인스턴스로 돌아갑니다.
- 현재 배포에 추가하여 새 영역 또는 새 리전에서 전체 스택을 새롭게 설정합니다.
예를 들어 파트너 마케팅 플랫폼을 만드는 Google Cloud 고객인 Everflow는 연쇄 복제본과 인플레이스 메이저 버전 업그레이드를 활용해 사용자 다운타임 또는 서비스 중단을 최소화하면서 원활하게 MySQL 8.0으로 업그레이드했습니다.
연쇄 복제본을 사용해 메이저 버전 업그레이드를 수행하려면 다이어그램을 참조하고 다음 단계를 수행하세요.
- 현재 5.7 기본 인스턴스에서 기존 또는 신규 영역/리전에 대한 읽기 복제본을 만듭니다.
- 메이저 버전 업그레이드 기능을 통해 복제본을 8.0으로 업그레이드합니다.
- 복제를 사용 설정하고 필요한 경우 새로운 8.0 읽기 복제본 아래에 복제본을 만듭니다.
- 다운타임을 최소화하기 위해 미리 IP 주소를 변경할 애플리케이션을 준비합니다.
- 트래픽을 라우팅하고 새 마스터로 전환할 애플리케이션을 준비합니다. Cloud Load Balancing을 사용하면 이 단계를 효율적으로 진행할 수 있습니다.
참고: 이 기간을 전환 기간으로 간주하고 버전 불일치 시간을 짧게 유지하세요. - 준비가 되면 8.0 읽기 복제본을 승격합니다.
- 이전 기본 MySQL 5.7 인스턴스를 삭제합니다.
참고: 앞서 언급했듯이 위의 프로세스를 진행하려면 애플리케이션의 IP 주소를 변경해야 합니다. 새 읽기 복제본을 승격하기 전에 IP 주소를 변경하여 컷오버가 수행될 때 중단을 최소화하는 것이 가장 이상적입니다.
PostgreSQL용 Cloud SQL
PostgreSQL에서는 5년의 지원 기간을 두고 매년 메이저 버전을 업데이트합니다. PostgreSQL 11은 2023년 11월에 지원 종료되었습니다. PostgreSQL 12 또는 13으로 업그레이드할 수도 있지만 PostgreSQL의 지원 종료 정책을 고려하면 PostgreSQL 14 이상 버전으로 업그레이드하는 것이 좋습니다. PostgreSQL 14 이상 버전에는 상당한 이점을 제공하는 몇 가지 새로운 기능과 개선사항이 도입되었습니다. 주요 변경사항은 다음과 같습니다.
- GROUP BY 및 JOIN 작업의 병렬 쿼리 실행, VACUUM 및 REINDEX 작업 속도 향상 등 성능이 개선됨
- 필터링, 행 수준 리플레이, 여러 대상에 대한 복제를 지원하는 논리적 복제 기능이 개선되어 다양한 사용 사례에 맞게 유연성과 확장성이 향상됨
- 보안이 강화되었을 뿐 아니라 개선된 JSON 기능 및 향상된 테이블 파티셔닝과 같은 고급 기능이 지원됨
자세한 내용은 여기를 클릭하세요.
PostgreSQL 14 이상 버전으로 업그레이드할 때의 고려사항 및 전략
데이터베이스가 이전 버전인 경우 최신 버전으로 업그레이드하시기 바랍니다. 이를 위해 사용할 수 있는 다양한 전략이 있습니다. PostgreSQL은 버전 간 복제를 지원하지 않으므로 인스턴스가 읽기 복제본으로 복제되는 동안에는 기본 인스턴스를 업그레이드할 수 없습니다. 기본 인스턴스보다 먼저 읽기 복제본을 업그레이드하는 것도 불가능할 수 있습니다. 따라서 업그레이드 과정에서 기본 인스턴스를 먼저 업그레이드해야 합니다. 진행하기 전에 기존 복제본에 대한 복제를 사용 중지해야 합니다. 기본 인스턴스가 업그레이드된 후에 읽기 복제본을 하나씩 업그레이드하고 복제를 다시 사용 설정할 수 있습니다. 또는 읽기 복제본을 삭제하고 기본 인스턴스가 업그레이드된 후에 다시 만드는 방법도 있습니다.
MVU를 통한 업그레이드: 최신 버전의 PostgreSQL(14.0 이상)로 업그레이드할 때 Cloud SQL의 메이저 버전 업그레이드 기능을 활용하는 것이 좋습니다. 인플레이스 업그레이드를 사용하면 업그레이드 후에도 현재 인스턴스의 이름, IP 주소, 기타 설정을 유지할 수 있습니다. PostgreSQL용 Cloud SQL 인플레이스 업그레이드 작업에서는 pg_upgrade 유틸리티를 사용합니다. 진행하기 전에 먼저 베타 또는 스테이징 환경에서 업그레이드를 테스트하거나 위에서 나온 대로 인스턴스를 클론하시기 바랍니다. PostgreSQL용 Cloud SQL 메이저 버전 업그레이드는 사용자를 대신하여 사전 검증 단계와 백업을 수행합니다.
Enterprise Plus로 가용성 및 가격 대비 성능 향상 실현
MySQL 8.0이나 PostgreSQL 14 또는 15로 업그레이드하면 고급 기능을 제공하는 Cloud SQL Enterprise Plus 버전으로 빠르게 인플레이스 업그레이드할 수 있습니다. Cloud SQL Enterprise Plus 버전은 다음과 같은 이점을 제공합니다.
- 99.99% 가용성 SLA(유지보수 포함)
- 인스턴스 다운타임이 10초 미만으로 사실상 다운타임이 거의 없는 계획된 유지보수
- 데이터 캐시 옵션으로 최대 3배 빠른 처리량을 지원하고 더 빨라진 하드웨어로 더 큰 규모와 최적의 성능 제공
- vCPU 96개 및 메모리 624GB를 제공하는 Enterprise 버전에 비해 vCPU 최대 128개 및 메모리 864GB를 제공하는 보다 큰 머신 구성 지원
- PITR(point-in-time recovery) 기간이 7일인 Enterprise 버전과 달리 PITR을 최대 35일 지원
Cloud SQL Enterprise Plus 버전으로 인플레이스 업그레이드하는 데 몇 분밖에 안 걸리며 다운타임도 60초 미만에 불과합니다. 자세한 내용은 여기를 클릭하세요.
마치며
업그레이드가 합리적인 이유를 되짚어 보자면 데이터베이스 인프라의 보안, 성능, 기능에 대한 투자이기 때문입니다. 최신 기술을 받아들임으로써 데이터를 보호하고 애플리케이션을 최적화하며 조직의 역량을 강화할 수 있습니다. Cloud SQL의 인플레이스 메이저 버전 업그레이드 기능을 사용하면 데이터베이스를 간단하게 효율적으로 업그레이드하여 최신 버전으로 원활하게 전환할 수 있습니다. 시작하려면 여기를 클릭하세요.