요즘 MySQL5.7의 EOL에 따라서, Aurora2에서 Aurora3으로 업그레이드 작업이 한창인 가운데 흥미로운 버그를 하나 발견했다.
그 버그 내용은 Aurora MySQL 버전 3.04.1 이하 환경에서 ALTER TABLE와 같은 DDL을 실행하면, 실행이 완료될 때까지 리더 인스턴스에서 해당 테이블에 접속이 안 될 가능성이 있다.
이것에 대한 대책은 세가지가 있다.
1. Aurora MySQL 버전 3.05 이상으로 업그레이드한다.
2. DDL 실행 시 ALGORITHM = COPY를 지정
3. Percona의 pt-online-schema-change를 사용
2번의 경우는 메인터넨스 모드로 실행을 해야 할 가능성이 있기 때문에 현실적이지 않을수 있다.
그렇다면 최적의 옵션은 최신 버전으로 업그레이드 하는 것이다.
하지만 3.05.X로 업그레이드 하는 경우는 표준서포트기간이 11개월(~2025.01) 정도밖에 남지 않게되기 때문에 서비스를 멈추는 메인터넨스 작업을 해야 할 가능성이 발생한다.
3.04버전을 고르는 가장 큰 이유는 LTS버전이기 때문에 당분간 업그레이드작업을 피할 수 있는 점도 큰 장점중 하나라고 생각한다.
실제로 서포트 기간이 2026년10월이기 때문이다.
마지막 3번의 경우는 예전부터 온라인 작업을 위해서 사용해 오던 툴이다.
현실적으로는 3번을 사용해서 온라인 작업으로 스키마를 변경하는 것이 좋다고 생각하지만 서비스와 디비의 상황에 따라서는 적용하지 못할 가능성도 있다.
나의 경우는 Aurora-MySQL에서 수십억 레코드를 가지고 있는 테이블의 스키마를 변경하기 위해서 pt-online-schema-change를 사용한 실적이 여러번 있다. (기억으로는 2주정도 실행되었던 것 같다~)
아무튼 Aurora-MySQL을 사용하고 있다면 이러한 점을 주의해서 버전을 선택하는 것이 바람직 할 수도 있다.
'AWS > RDS-MYSQL' 카테고리의 다른 글
aws rds-mysql에서 레플리케이션의 error statement를 스킵하는 방법 (0) | 2023.03.30 |
---|