Amazon RDS for MySQL 엔진 업그레이드 — 2. Blue/Green 배포를 통한 엔진 업그레이드

An mihyang
7 min readDec 28, 2023

--

해당 포스트는 DB 인스턴스 엔진 버전 업그레이드 방식 중 Blue/Green 배포를 통한 업그레이드 방법에 대해 설명합니다.

Blue/Green 배포를 사용하면 DB 인스턴스 업그레이드에 필요한 다운타임을 최소화할 수 있습니다.

Amazon RDS 블루/그린 배포

Amazon RDS 블루/그린 배포 개요 — Amazon Relational Database Service

블루/그린 배포는 프로덕션 환경을 복사하는 스테이징 환경을 만듭니다.

  • 블루 환경: 현재 프로덕션 환경
  • 그린 환경: 스테이징 환경

스테이징 환경(그린)은 논리적 복제를 사용하여 현재 프로덕션 환경(블루)과 계속 동기화 됩니다.

프로덕션 워크로드에 영향을 주지 않고 그린 환경에서 RDS DB 인스턴스 를 변경할 수 있습니다. 그린 환경의 변경 사항을 철저하게 테스트할 수 있습니다. 준비가 되면 환경을 전환을 통해 그린 환경을 새로운 프로덕션 환경으로 승격할 수 있습니다.

RDS 블루/그린 배포 사용의 장점

  • 프로덕션에 바로 사용할 수 있는 스테이징 환경을 쉽게 만들 수 있습니다.
  • 프로덕션 환경에서 스테이징 환경으로 데이터베이스 변경 사항을 자동으로 복제합니다.
  • 프로덕션 환경에 영향을 주지 않고 안전한 스테이징 환경에서 데이터베이스 변경 사항을 테스트합니다.
  • 데이터베이스 패치와 시스템 업데이트를 최신 상태로 유지합니다.
  • 새로운 데이터베이스 기능을 구현하고 테스트합니다.
  • 애플리케이션을 변경하지 않고도 스테이징 환경을 새 프로덕션 환경으로 전환합니다.
  • 내장된 전환 가드레일을 사용하여 안전하게 전환합니다.
  • 전환 중 데이터 손실이 발생하지 않습니다.
  • 워크로드에 따라 대부분 1분 이내에 빠르게 전환합니다.

1. (권장) 파라미터 & 옵션 그룹 생성

RDS for MySQL 엔진 업그레이드 시 엔진 버전에 맞는 파라미터 그룹 및 옵션 그룹을 선택해야 합니다.

이 단계에서는 업그레이드 될 DB에 사용할 파라미터, 옵션 그룹을 생성합니다.

1.1. 파라미터 그룹 생성

RDS 좌측 탐색 탭의 파라미터 그룹을 선택한 후 파라미터 그룹 생성 버튼을 클릭하여 생성합니다.

파라미터 그룹의 패밀리(버전)와 이름을 설정하고 생성버튼을 눌러 생성합니다.

Amazon RDS DB 인스턴스에 대한 MySQL 파라미터 예외

RDS 인스턴스에 파라미터 그룹 수정 시 lower_case_table_names 파라미터 값을 수정할 수 없습니다.

ex) 기존에 lower_case_table_names 파라미터 값이 1로 설정되어있는 파라미터 그룹이 연결되어있는 DB를 lower_case_table_names 값이 0으로 설정된 파라미터 그룹으로 수정할 경우 에러가 발생합니다.

  • 에러 메시지 예시

1.2. 옵션 그룹 생성

RDS 좌측 탐색 탭의 옵션 그룹을 선택한 후 그룹 생성 버튼을 클릭하여 생성합니다.

옵션 그룹 생성의 각 부분에 정보를 넣고 엔진 및 메이저 엔진 버전 선택 후 생성 버튼을 클릭합니다.

2. RDS 엔진 업그레이드 — 블루/그린 배포

블루/그린 배포 전 확인 사항

RDS MySQL에서 블루/그린 배포를 사용하려면 파라미터 그룹에서 binlog_format 파라미터의 값을 OFF에서 ROW로 변경하여 Binlog를 활성화해야 합니다.

기존 인스턴스로의 Binlog 동기화를 설정하기 위해서는 신규 인스턴스에서도 Binlog를 활성화해야 사용이 가능합니다. Binlog를 사용하고 있는지 확인하는 방법은 RDS MySQL 서버에 접속하여 명령어로 확인할 수 있습니다.

MySQL> show variables like 'log_bin';

binlog_format 파라미터 값 변경 방법

  1. RDS 탐색 창에서 파라미터 그룹 선택하여 이동
  2. 변경할 파라미터 그룹 이름 선택 후 편집
  3. 검색 창에 binlog_format 파라미터 검색
  4. 파라미터 값 변경 후 변경 사항 저장

블루/그린 배포 관련 제한 사항

  • 암호화 되지 않은 DB 인스턴스 는 암호화된 DB 인스턴스로 변경할 수 없습니다.
  • 암호화 된 DB 인스턴스는 암호화되지 않은 DB 인스턴스로 변경할 수 없습니다.
  • 블루 환경 DB 인스턴스를 해당 그린 환경 DB 인스턴스보다 높은 엔진 버전으로 변경할 수 없습니다.
  • 블루 환경과 그린 환경의 리소스는 동일한 AWS 계정에 있어야 합니다.
  • 전환 중에 블루 환경 기본 DB 인스턴스 는 외부 복제의 대상이 될 수 없습니다.
  • 소스 데이터베이스가 사용자 지정 옵션 그룹과 연결된 경우, 블루/그린 배포를 생성할 때 메이저 버전 업그레이드를 지정할 수 없습니다.

블루/그린 배포 관련 제한 사항 중 옵션 그룹 관련

  • 아래 이미지와 같이 옵션 그룹은 default로 설정되어 있어야 합니다.
  • 사용자 지정 옵션 그룹과 연결되어 있을 경우 아래와 같은 에러 메세지가 발생합니다.

해결 방법

블루/그린 배포 생성 시 메이저 버전 업그레이드를 지정하지 않고 블루/그린 배포를 생성합니다. 그런 다음 생성된 그린 환경에서 수정을 통해 데이터베이스 업그레이드를 진행합니다.

2.1. Blue/Green 배포 생성

블루/그린 배포를 진행할 DB 인스턴스 선택 후 작업 → 블루/그린 배포 생성을 클릭합니다.

블루/그린 배포 식별자 입력 후 엔진 버전, 파라미터 그룹을 선택합니다.

스테이징 환경 생성 버튼을 클릭하여 블루/그린 배포 생성을 완료합니다.

블루/그린 배포 생성이 완료되면 하기와 같은 구조를 가지게 됩니다.

  • 블루: 프로덕션 환경
  • 그린: 스테이징 환경

2.2.블루/그린 배포 전환

전환 한 후에도 이전 블루 환경의 DB 인스턴스가 유지되며, 블루와 그린 환경 간의 복제가 중지됩니다.

전환이 완료되면 그린 환경에 있던 DB 인스턴스가 새로운 프로덕션 DB 인스턴스가 됩니다. 현재 프로덕션 환경의 이름과 엔드포인트가 새로 승격된 프로덕션 환경에 할당되므로, 애플리케이션을 변경할 필요가 없습니다. 따라서 이제 프로덕션 트래픽이 새 프로덕션 환경(그린)으로 이동합니다.

블루/그린 배포 식별자를 선택한 후에 작업 → 전환 을 클릭합니다.

내용을 확인하고, 그린 데이터 베이스를 승격합니다.

전환이 완료되면 하기와 같은 DB 구조를 가지게 됩니다.

2.3. 블루/그린 배포 삭제

블루/그린 배포 식별자를 선택한 후에 작업 → 삭제 버튼을 통해 삭제를 진행합니다.

삭제가 완료되면 하기 이미지와 같이 일반적인 DB 구성으로 변경됩니다.

테스트 및 전환이 완료 되었으면 기존 환경이었던 **-old1 식별자의 DB를 삭제할 수 있습니다.

블루/그린 배포를 삭제로 블루/그린 배포를 통한 엔진 업그레이드가 완료 되었습니다.

긴 글 읽어주셔서 감사합니다.

--

--