RDS PostgreSQL에 옵션 그룹을 생성해 적용하는 것이 가능할까?

RDS PostgreSQL에 옵션 그룹을 생성해 적용하는 것이 가능한지 정리해 봤습니다.
2023.05.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 RDS PostgreSQL에 옵션 그룹을 생성해 적용하는 것이 가능한지 정리해 봤습니다.

RDS PostgreSQL에서 옵션 그룹은?

기본적으로 옵션 그룹을 사용할 수 있는 데이터베이스 엔진은 다음과 같습니다.

  • MariaDB
  • Microsoft SQL Server
  • MySQL
  • Oracle

PostgreSQL의 경우 공식 문서에 따르면「PostgreSQL은 옵션 및 옵션 그룹을 사용하지 않습니다. PostgreSQL은 확장 및 모듈을 사용하여 추가 기능을 제공합니다. 」옵션 그룹을 사용하지 않는다고 안내하고 있습니다.

실제로 콘솔 화면에서 RDS를 생성할 시, 데이터베이스 엔진으로 PostgreSQL을 선택하면, 옵션 그룹의 경우 디폴트로 선택되고 사용자가 선택할 수는 없습니다.

옵션 그룹의 경우에도 데이터베이스 엔진을 선택할 때, PostgreSQL이 없는 것을 확인할 수 있습니다.

그렇다면 CloudFormation으로 옵션 그룹을 생성해 적용하는 것은 가능힌지, DB 엔진 버전을 변경했을 시 PostgreSQL의 옵션 그룹 설정은 어떻게 바뀌는지 이번 블로그에서 정리해 봤습니다.

CloudFormation으로 옵션 그룹 생성

# ------------------------------------------------------------#
#  Create  OptionGroup
# ------------------------------------------------------------#
  OptionGroup:
    Type: "AWS::RDS::OptionGroup"
    DeletionPolicy: Retain
    UpdateReplacePolicy: Retain
    Properties:
      EngineName: "postgres"
      MajorEngineVersion: "14"
      OptionGroupDescription: !Sub ${SystemName}-${EnvName}-rds-dbog Option Group
      OptionGroupName: !Sub ${SystemName}-${EnvName}-rds-dbog
      Tags:
        - Key: Name
          Value: !Sub ${SystemName}-${EnvName}-rds-dbog

옵션 그룹의 CloudFormation 코드는 댜음과 같습니다.

별다른 설정 없이, EngineName을 postgres로 설정하고 생성합니다.

CloudFormation 스택을 생성하면, 당연히 에러가 발생할 줄 알았지만 문제 없이 PostgreSQL의 옵션 그룹이 생성 되었습니다.

RDS에서도 확인해 보면, 문제 없이, CloudFormation으로 생성한 옵션 그룹이 설정되어 있는 것을 확인할 수 있습니다.

그렇다면 CloudFormation으로 PostgreSQL의 옵션 그룹을 생성할 수 있도록 postgres의 속성 값을 지원하는 걸까요?

실제로 공식 문서를 확인해 보면 옵션 그룹에서 postgres 속성 값을 지원하는 것을 알 수 있습니다.

즉, 콘솔 화면에서 PostgreSQL의 옵션 그룹을 생성하는 것은 불가능하지만, CloudFormation을 이용한다면 PostgreSQL의 옵션 그룹을 생성하는 것이 가능합니다.

버전 업그레이드시에도 가능할까?

CloudFormation으로 옵션 그룹을 생성하는 것이 가능하다는 게 증명 되었으니, 이번에는 버전 업그레이드시에도 옵션 그룹을 수정하는 것이 가능한지 확인해 보도록 하겠습니다.

먼저 콘솔 화면에서 확인해 보면, 버전 업그레이드시 DB 파라미터 그룹만 수정이 가능한 것을 확인할 수 있습니다.

애초에 옵션 그룹을 선택할 수 있는 칸 자체가 보이질 않습니다.

그렇다면 15.2 버전으로 데이터베이스 엔진 버전을 업그레이드 한 다음, 옵션 그룹의 상태를 확인해 보도록 하겠습니다.

버전 업그레이드 과정을 살펴보면, 기존에 CloudFomration을 통해 생성한 옵션 그룹이 제거되고, 15 버전의 새로운 옵션 그룹이 설정되는 것을 확인할 수 있습니다.

기존에 default:postgres-15가 없는 경우, 새롭게 default:postgres-15 라는 옵션 그룹이 생성됩니다.

OptionGroupName: !Ref OptionGroup

CloudFormation에서 별도로 옵션 그룹을 대상 RDS에 설정하는 기능은 없지만, RDS를 생성할 때, 해당 코드로 옵션 그룹을 설정하는 것은 가능합니다.

그렇다면, default:postgres-15로 설정되어 있는 RDS의 옵션 그룹을 변경하는 것이 가능한지 테스트해 봤습니다.

테스트 결과, 문제 없이 15 버전의 옵션 그룹이 생성되어, RDS에 설정되어지는 것을 확인할 수 있었습니다.

여기서 파라미터 그룹의 경우 기존에 생성한 14버전의 파라미터 옵션 그룹은 삭제할 수 있었으나, 옵션 그룹의 경우 삭제가 되지 않았습니다.

또 한, CloudFormation으로 옵션 그룹과 파라미터 그룹을 수정할 경우 동일한 이름의 리소스를 삭제했음에도 옵션 그룹과 파라미터 그룹의 이름을 변경해야했습니다.

마무리

  • 기본적으로 콘솔 화면에서 PostgreSQL의 옵션 그룹은 사용자가 직접 생성할 수 없으며, 설정할 수 없다.
  • 하지만, CloudFormation을 이용할 경우 PostgreSQL의 옵션 그룹을 생성하여 RDS에 설정할 수 있다.
  • RDS 버전 업그레이드시, 콘솔 화면에서 파라미터 그룹은 설정할 수 있으나, 옵션 그룹은 설정할 수 없다.
    • 이 경우 자동적으로 default 옵션 그룹이 생성되어 적용된다.
  • 버전 업그레이드시, 옵션 그룹을 설정할수 없으나, CloudFormation으로 파라미터 그룹과 옵션 그룹을 설정할 수 있다.
    • 하지만, 기존 리소스를 삭제하더라도 동일한 이름의 옵션 그룹과 파라미터 그룹을 생성할 수는 없다.

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 kis2702@naver.com로 보내주시면 감사하겠습니다.