Cloud, IT Infra

메이저 버전 업데이트의 위험성 — 실무적 관점

준레논 2026. 7. 16. 16:38

"최신 버전으로 깔았는데 예전 쿼리가 에러난다" — 실무에서 흔히 겪는 이 문제, 원인을 정리해봤다.

DB 메이저 버전의 업그레이드를 예시로 살펴본다.


1. 예약어 추가

버전이 올라가면 새 예약어가 생긴다. MySQL 8.0에서는 RANK, WINDOW, LEAD 같은 단어가 예약어가 됐다. 컬럼명으로 rank를 쓰던 테이블은 갑자기 문법 오류를 낸다.

→ 백틱으로 감싸거나 컬럼명을 바꿔야 한다.

2. Deprecated 기능의 완전 제거

경고만 뜨던 기능이 다음 메이저 버전에서 아예 사라지는 게 가장 흔한 사고 원인이다.

  • MySQL 8.0: PASSWORD() 함수 제거, GROUP BY의 암묵적 정렬 제거
  • PostgreSQL: 버전마다 옛 기능이 하나씩 사라짐

→ 업그레이드 전 "Deprecated Features" 문서를 꼭 읽어야 한다.

3. 인증 방식 변경

MySQL 8.0은 기본 인증 플러그인이 mysql_native_password에서 caching_sha2_password로 바뀌었다. 구버전 드라이버(JDBC, PHP 등)는 아예 접속이 안 된다.

이건 SQL 에러가 아니라 연결 단계에서 터지는 문제라 원인 찾기가 더 까다롭다.

4. 옵티마이저 변화 → 조용히 느려지는 쿼리

구문은 멀쩡한데 실행 계획이 바뀌어서 인덱스를 안 타는 경우. 에러 로그엔 안 남고 성능만 급락해서 발견이 늦다.

5. 문자셋/정렬 기본값 변경

MySQL 8.0은 기본 charset이 latin1에서 utf8mb4로 바뀌었다. 정렬 순서, 외부 시스템과의 인코딩 호환성이 미묘하게 어긋날 수 있다.

6. 확장/플러그인 호환성 깨짐

PostGIS 같은 확장이나 서드파티 백업·모니터링 툴이 신버전을 아직 지원하지 않아 장애로 이어지는 경우도 있다.

7. ORM Dialect 불일치

Hibernate 등에서 DB 버전에 맞는 Dialect를 안 바꾸면 신버전 문법을 못 쓰거나 예상 밖 SQL이 생성된다.

8. 롤백이 안 된다

대부분의 DB는 메이저 업그레이드 후 공식적인 다운그레이드를 지원하지 않는다. 문제가 생기면 백업 복구밖에 답이 없다.


예방 체크리스트

  1. 스테이징 환경에 먼저 신버전 설치 후 운영 쿼리 로그(슬로우 쿼리 로그 포함)를 재생(replay)해서 에러/성능 차이 검증
  2. 공식 문서의 "Upgrading" + "Deprecated/Removed Features" 섹션 필수 확인
  3. 드라이버/커넥터/ORM 버전도 DB 버전에 맞춰 동시에 업그레이드 대상에 포함
  4. 스냅샷/백업 확보 후 진행, 롤백 시나리오를 사전에 문서화

'Cloud, IT Infra' 카테고리의 다른 글

인프라 용어 설명 — NAS, DSM, NTP  (0) 2026.07.16
인프라/클라우드 공부 시작  (0) 2026.07.08