10년 넘게 오라클로 서비스하던 NHN 결제팀이 오라클을 MySQL로 전환한 페이드아웃 과정을 개발자 관점에서 상세히 공유한다. SQL 변환, 아키텍처 수정, 데이터 정합성 검증, 그리고 전환 도중 마주친 온갖 사이드 이펙트를 실제 장애 사례와 함께 짚는다.
핵심 포인트- 오라클과 MySQL은 데이터 타입, 함수, 빈 문자열(오라클은 널 취급) 처리, 중첩 트랜잭션 미지원, 시퀀스 부재 등에서 차이가 커 자동 변환 사이트만으로는 완벽하지 않았다.
- DB 게이트웨이 대신 애플리케이션 서버에서 양쪽으로 이중 호출하도록 하고, **네임스페이스**와 매크로 한 줄로 4가지 모드(오라클 메인/MySQL 메인 등)를 런타임 설정 파일로 전환하게 구현했다.
- 데이터 정합성은 중요도에 따라 전건 비교 또는 레코드 카운트+컬럼 합계 비교로 검증하고, 오라클 메인→MySQL 메인→MySQL 단독의 3단계로 안정성을 확인했다.
- EUC-KR↔UTF-8 문자셋 변환 깨짐(헥사 코드로 우회), 시퀀스 캐시 점프로 인한 정합성 붕괴, 날짜 정수 연산이 유발한 풀 인덱스 스캔·CPU 폭주 등 치명적 함정을 사례로 제시한다.
왜 읽나상용 RDBMS를 오픈소스로 무중단 마이그레이션할 때 실제로 터지는 데이터 정합성·문자셋·시퀀스·날짜 함정을 장애 재현 수준으로 미리 학습할 수 있다.