Aurora DB 엔진 업그레이드 시 Aurora 2 일부 버전, Aurora 3 전체 버전에서 특정 상황을 충족할 경우 다운타임 없이 업그레이드가 가능합니다. 어떤 경우에 ZDP 가 동작하는지 알아보겠습니다.
업그레이드 전 고려 사항
허용 가능한 가동 중지 시간
업그레이드 시 다운타임으로 인해 서비스가 중단될 수 있기 때문에 실제 서비스에 허용 가능한 중단 시간을 파악해야 합니다.
특정 버그 또는 새로운 기능이 업그레이드가 필요할 만큼 중요한가
잠깐의 중단도 서비스에 중대한 영향이 있을 경우 보안 이슈로 인해 서비스에 중대한 영향이 있다면 빠른 시일 내에 업그레이드가 필요하지만 사소한 버그나 새로운 기능이 필요할 경우 당장 운영에 반영해야 할 만큼 필요한 사항인지 고려돼야 합니다.
수행할 검증 테스트의 정도
마이너 버전의 경우 기존 버전과 호환성에 크게 문제가 없지만 메이저 버전의 경우 파라미터 그룹부터 기존에 작성된 SQL문까지 광범위에 걸친 테스트가 필요하기에 업그레이드까지 충분한 기간을 가지고 확인이 필요합니다.
제로 가동 중지 패치 적용 기능(ZDP)
Aurora MySQL은 데이터베이스 엔진 업그레이드 시 다운타임을 최소화하기 위한 기능으로 ZDP 기능을 지원합니다. ZDP가 시작되면 업그레이드가 진행되는 동안 세션이 유지된 채 데이터베이스 엔진이 재부팅됩니다. 이후 약 1분 동안 처리량이 저하될 수 있습니다.
ZDP 기능 지원 대상
Aurora 2.10 이상 db.t2, db.t3 클래스만 지원
Auroray MySQL 3.* 모든 클래스
Aurora 2.07 이상 버전도 지원한다고 하는 데 일부 버전만 지원하는 건지 2.9.3 → 2.10.0 버전으로 업그레이드할 때도 다운타임이 발생했습니다. 2 버전은 인스턴스도 t 계열만 지원이 되니 Aurora 3 버전부터 사용 가능하다고 생각하시는 게 맘 편할 듯합니다. 혹시나 2.10 이전 버전에서 ZDP를 사용하실 경우 Binlog가 비활성화된 상태여야만 합니다.
엔진 업그레이드가 ZDP로 실행되었을 경우 라이터 인스턴스 이벤트 로그에서 아래와 같은 문구가 표시됩니다.
또한 오류 로그에서 ZDP 실행 시 상세 프로세스 확인이 가능합니다. 로그를 확인해보면 ZD Started부터 엔진 재부팅, Ready for connections까지 2초의 시간이 소요되었으며 라이터 작업 후 리더 또한 동일한 프로세스로 업그레이드가 진행됩니다.
ZDP를 위한 확인사항
ZDP는 별도의 설정을 통해 사용되는 것이 아닌 Aurora 내부 프로세스에 의해 사용 여부를 고려하여 처리됩니다. ZDP는 무조건 사용되는 것이 아니기에 ZDP 사용이 취소된 경우 다운타임이 발생할 여지까지 고려돼야 합니다.
장기 실행 쿼리 또는 트랜잭션 진행 여부
Open SSL Connection 이 존재할 때
임시 테이블이나, 테이블에 Lock이 걸려있을 경우
보류 중인 파라미터 변경 사항이 있을 경우
위의 사항으로 인해 ZDP 수행이 적합하지 않을 경우 기존의 동작대로 업그레이드가 진행되며 다운타임이 발생하게 됩니다. 이 경우에는 Error 로그 상에 ZDP 실행이 되지 않은 원인이 기록됩니다. 활성 트랜잭션이 최소화되어 Aurora가 ZDP 수행이 가능하다고 판단될 경우 ZDP를 실행합니다.