Posts Cubrid에서 MySQL로의 여정(0) - 개요
Post
Cancel

Cubrid에서 MySQL로의 여정(0) - 개요

프로젝트 개요


담당 서비스에서 사용하던 DBMS인 Cubrid를 걷어내고 MySQL로 전환

  • 기존에 사용하던 Cubrid 9.3 버전은 이미 EOL(End of Life, 2023.03.31)이 지나 장기적인 유지보수가 어려운 상황이었음.
  • DBA 팀에 따르면 상위 버전(10.x)으로의 업그레이드는 데이터 저장 방식과 구조 차이로 인해 마이그레이션 과정이 복잡하다는 판단이 있었음.
  • 또한, DBA 팀의 인력 구성상 MySQL 운영이 더 수월하다는 현실적인 이유도 고려되었음.
  • 서비스 유지보수 관점에서도, 레퍼런스가 풍부하고 다양한 빅테크 기업에서도 폭넓게 사용 중인 MySQL로 전환하는 것이 더 유리하다고 판단함.

진행 과정


1. MySQL용 쿼리 검증

MyBatis를 사용하고 있기 때문에, MySQL 운영을 위해서는 MySQL 쿼리 작성이 필수.

  • 따라서 MySQL용 쿼리에 대한 쿼리 검증이 필수
  • 검증 대상:
    • 쿼리 문법 에러는 없는지
    • 읽기의 경우, Cubrid와 동일한 결과값이 조회되는지
    • 쓰기의 경우, Cubrid와 동일하게 데이터 변경이 발생했는지

2. Cubrid에서 MySQL로 데이터 마이그레이션

마이그레이션되는 동안 데이터 변경이 없도록 하기 위해, 서비스는 Read Only만 가능하게

  • 사용자 요청이 가장 적은 새벽 시간대에 진행
  • Read Only로 운영되는 시간을 최소화하기 위해, 마이그레이션에 걸리는 시간을 최소화 하는 방향을 생각

3. MySQL로 서비스 운영

혹시모를 Cubrid로의 롤백 상황을 대비해서 Cubrid에도 동일한 데이터 쌓는게 필요

  • 양쪽 DB간의 최소한의 정합성 보장을 위해 Spring Data에서 제공하는 ChainedTransactionManager(Deprecated됨) 사용하여 분산 트랜잭션 처리

4. Cubrid Fadeout

MySQL로 일정 기간동안 운영 후 이슈 없을시, Cubrid Fadeout

  • 관련 소스 코드 모두 제거
  • DB 서버 반납
This post is licensed under CC BY 4.0 by the author.

오늘 드는 생각 (251016, 은탄환)

-