오늘 아침 저는 AWS RDS에서 PostgreSQL 데이터베이스를 업그레이드하는 데 참여했습니다. 버전 9.3.3에서 버전 9.4.4로 이동하려고했습니다. 준비 데이터베이스에서 업그레이드를 "테스트"했지만 준비 데이터베이스는 훨씬 작으며 다중 AZ를 사용하지 않습니다. 이 테스트는 꽤 부적절하다는 것이 밝혀졌습니다.
프로덕션 데이터베이스는 다중 AZ를 사용합니다. 우리는 과거에 마이너 버전 업그레이드를 해왔으며,이 경우 RDS는 먼저 스탠바이를 업그레이드 한 다음 마스터로 승격시킵니다. 따라서 장애 발생시 유일하게 가동 중지 시간은 ~ 60 초입니다.
우리는 메이저 버전 업그레이드에서도 같은 일이 일어날 것이라고 생각했지만, 우리가 얼마나 잘못했는지.
설정에 대한 세부 사항 :
- db.m3.large
- 프로비저닝 된 IOPS (SSD)
- 300GB 스토리지 (139GB 사용)
- RDS OS 업그레이드가 탁월했으며 다운 타임을 최소화하기 위해이 업그레이드를 일괄 처리하려고했습니다.
업그레이드를 수행하는 동안 기록 된 RDS 이벤트는 다음과 같습니다.
데이터베이스 CPU는 약 08:44와 10:27 사이에서 최대가되었습니다. 이 시간의 대부분은 RDS가 업그레이드 전 및 업그레이드 후 스냅 샷을 찍는 것으로 보입니다.
AWS의 워드 프로세서 를 읽고 분명히 있지만 우리의 접근에 명백한 결함은 우리가의 사본을 만들지 않은 있다는 것을, 같은 영향에 대해 경고하지 않는 생산 다중 AZ 설정에서 데이터베이스 및로 업그레이드하려고 시운전
RDS가 수행 한 작업과 소요 시간에 대한 정보가 거의 없기 때문에 일반적으로 매우 실망 스러웠습니다. (다시 말해 시범 운영은 도움이 될 것입니다 ...)
그 외에도, 우리는이 사건으로부터 배우고 자하므로 여기에 우리의 질문이 있습니다 :
- RDS에서 메이저 버전 업그레이드를 수행 할 때 이런 종류의 것이 정상입니까?
- 다운 타임을 최소화하면서 향후 주요 버전 업그레이드를 원한다면 어떻게해야할까요? 복제를 사용하여보다 매끄럽게 만드는 영리한 방법이 있습니까?
ANALYZE
통계를 업데이트 하는 매뉴얼 이 해결되었습니다. 누군가 이것에 대한 통찰력을 가지고 있다면 그것도 좋을 것입니다.