| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 생성 패턴
- AWS
- github
- 커머스
- Playwright
- 경로 계획 알고리즘
- PostgreSQL
- MAPF
- AWS 비용 절감
- 티스토리챌린지
- leetcode
- Rust
- Til
- 회고
- amazon ecs
- Go-lang
- 실용주의 프로그래머
- 청첩장 모임
- 오블완
- ssh
- 디자인 패턴
- DevOps
- 지표
- 신혼 여행
- 논문 정리
- study
- terraform
- 14일 공부
- docker
- 구조 패턴
- Today
- Total
밤 늦게까지 여는 카페
AWS PostgresQL 12 버전 표준 지원 종료 예정으로 인한 DB 인스턴스 12.7 => 16.1 업그레이드 후기 본문
안녕하세요. 벌써 9월이 되었습니다. 이제 2024년도 3개월 밖에 안 남았습니다...!
올해 기억 남는 일이 있으신가요? 아니면 올해를 장식할 일들이 많이 남으셨나요?
저는 기억하고 추억하는데 기록만큼 좋은 것은 없는 것 같더라고요.
남은 3개월 동안 있을 좋은 일들 열심히 만들고 행복한 2024년으로 기록하겠습니다.
오늘은 AWS PostgresQL 12 버전 지원 종료로 인한 DB 인스턴스를 12.7 버전에서 16.1 버전으로 업그레이드한 경험을 기록하려고 합니다.
끝내고 보니 간단한 작업이었지만 처음 하는 작업이다 보니 걱정이 많이 되었습니다 ㅋㅋ쿠ㅠ
비슷한 상황에 처하신 분들께 조금의 도움이 되었으면 좋겠네요!
0. 'AWS PostgresQL 12 버전 표준 지원 종료 예정'이 무슨 뜻이죠?
AWS RDS 서비스는 PostgresQL 엔진을 지원하며 PostgresQL이 실행된 DB 인스턴스를 관리해 줍니다.
PostgresQL의 새로운 버전이 나오면 AWS에서도 이를 지원합니다.
PostgresQL도 소프트웨어기에 의존성을 관리해줘야 하고, 보안 패치 등을 관리해줘야 합니다.
AWS는 비용을 받는 대신 이러한 관리를 책임지고 있는 것이죠.
하지만 PostgresQL의 모든 버전에 대해서 관리하는 것은 현실적으로 불가능합니다.
PostgresQL 커뮤니티에서도 오래된 버전은 더 이상 관리하지 않는데
커뮤니티에서 관리하지 않는 버전을 AWS에서 관리하려면 정말 많은 비용이 발생하게 됩니다.그리고 AWS는 오픈소스에 투자를 하지 않...
그래서 AWS는 PostgresQL 커뮤니티에서 특정 버전을 더 이상 지원하지 않는 순간이 오면
고객들에게 유예 시간을 주고 해당 버전의 표준 지원을 종료합니다.

1. AWS에서 표준 지원이 종료된 버전은 어떻게 되나요?
추가적인 비용이 발생합니다.
RDS DB 인스턴스를 사용할 때 시간당 비용을 지불하는데 여기에 '연장 지원 비용(extended support cost)'이 추가됩니다.
3년까지는 연장 지원 비용을 지불하면서 표준 지원이 종료된 버전을 사용할 수 있지만
3년이 지나버리면 AWS에서 강제로 DB 인스턴스를 업그레이드하니 주의하셔야 합니다...!
※경험 많으신 팀원분들이 알려준 데이터베이스 업그레이드 주의사항※
데이터베이스 엔진의 버전이 업그레이드되면 몇몇 데이터 타입을 지원하지 않게 되거나
이전 버전에서는 해소된 성능 부하 이슈가 재현될 수 있습니다.
그래서 미리 테스트를 통해서 시스템과 문제없이 호환되는지 확인해 주는 것이 좋습니다!
그리고 DB 인스턴스 1개 당 약 86.4달러의 추가 비용을 월마다 지불해야 하는데 이게 무시할 수 없는 비용입니다 ㅎㄷㄷ
- 3년 차에는 무려 172.8달러!

저는 DB 버전 업그레이드가 필수가 아니다 보니 작업을 계속해서 미뤘고
마침내 AWS에서 PostgresQL 12 버전의 표준 지원을 종료를 공지했기에 DB 버전 업그레이드 작업을 진행하게 되었습니다...
- 앞으로 더 바빠질 텐데 그전에 업그레이드하는 게 좋겠더라고요 ㅋㅋㅋ
2. DB 엔진 메이저 버전 업그레이드 전 테스트하기
위에서도 말씀드렸다시피 업그레이드된 DB 엔진 버전과 시스템이 문제없이 동작하는지 테스트하는 과정은 필수입니다.
어떻게 테스트할 수 있을까요?
가장 간단한 방법은 역시 로컬 환경에서 테스트하는 것이라고 생각합니다.
제가 테스트했던 방법은 다음과 같이 간단합니다.
1. 현재 실행되고 있는 DB의 데이터를 덤프 뜬 다음
2. 로컬 환경에서 업그레이드 타겟 버전의 DB를 실행합니다.
3. 새롭게 실행된 DB에 덤프 데이터를 복원시키고
4. 시스템을 실행시켜서 각 기능들을 테스트합니다.
이 방법 말고도 로컬 환경에서 구버전의 DB를 실행시켜 놓고 PostgresQL 커뮤니티에서 제공해 주는 스크립트를 이용하여 DB 버전을 업그레이드하는 방법도 있었습니다.
- 저는 이 방법이 복잡해 보여서 시도해보지 않았습니다 ㅋㅋㅋ
테스트도 잘 되었으니 AWS 콘솔을 이용해서 DB 메이저 버전을 업그레이드합니다!
아무 문제 없이 끝났을까요?
3. no pg_hba.conf entry for host ... 에러 발생!
문제가 있었습니다...!
AWS는 PostgresQL 15 버전부터 ssl 연결을 강제하는 것이 기본 설정이더라고요 ㅜㅠ
만약 RDS 파라미터 그룹을 따로 생성하지 않고 그대로 DB 인스턴스의 버전을 업그레이드한다면
다음과 같은 에러가 발생하게 됩니다.
- no pg_hba.conf entry for host "10.0.1.25", user "admin", database "test", no encryption
이를 해결하는 방법 자체는 간단합니다.
1. PostgresQL 16 버전을 위한 RDS 파라미터 그룹을 새롭게 생성하고,
2. rds.force_ssl 파라미터 값을 0으로 변경합니다.
3. 업그레이드된 DB 인스턴스의 파라미터 그룹을 1에서 생성한 파라미터 그룹으로 변경하고
4. 인스턴스를 재부팅합니다.
5. 끝!
하지만 다른 팀원분들이 테스트를 하고 있었거나 어떤 이유로 시스템을 사용하고 있었다면 작업에 큰 영향을 끼치게 됩니다.
- 민폐쟁이! 흑흑...
이렇게 마지막에 거하게 폐를 끼치고 저는 DB 업그레이드 작업을 마치게 되었습니다.
부디 다른 분들은 문제없이 DB 업그레이드 작업을 마치기를 기원합니다.
'aws' 카테고리의 다른 글
| [AWS IoT Core] 파이썬 SDK는 MQTT 통신에 443 포트를 기본값으로 사용하고 있었습니다! (0) | 2024.09.22 |
|---|---|
| AWS 서비스 IP 범위 확인하는 방법 (0) | 2024.09.08 |
| AWS Redis 클러스터, DB 인스턴스 가용 영역 변경 작업기 - 가용 영역 통일해서 데이터 통신 비용 절약하자! (0) | 2024.09.06 |
| [AWS 비용 절감] 자칫하면 줄줄 샐 수 있는 데이터 통신 비용 - 데이터 통신 비용으로 얼마까지 지출해보셨나요? (0) | 2024.08.29 |
| [Amazon ECS & 비용 절감] Fargate 태스크 public ip 없이 사용하기 - IPv4 주소 1개당 월 3.6달러 무시하다가는 돈 줄줄 샙니다... (0) | 2024.08.25 |