DB(데이터베이스)는 IT 시스템에 필수적인 요소입니다. 장기간 시스템을 운영하게 되면 DB 관리에 가장 많은 노력을 쏟게 됩니다. DB 관리 업무 중 위험성과 비용 부담이 큰 작업 중의 하나로 데이터 마이그레이션(Migration)을 들 수 있습니다. 본 아티클에서는 데이터 마이그레이션을 효과적으로 수행할 수 있는 방법에 대해 알아보겠습니다.
DB 버전 업그레이드, 노후화된 노드의 변경 및 DB 교체 등의 이유로 운영 중인 DB를 변경해야 하는 경우가 종종 발생합니다. 이때 기존 DB에 저장되어 있던 데이터를 신규 DB로 옮기는 과정이 필요한데 이를 데이터 마이그레이션이라고 합니다.
데이터 마이그레이션을 위해 가장 많이 사용하는 방법은 Import(가져오기)·Export(내보내기)입니다. 각 DBMS(데이터베이스관리 시스템) 제품이 자체적으로 지원하는 유틸리티를 활용하여 Export를 수행하는 시점을 기준으로 데이터를 추출해 디스크에 파일로 생성하고 해당 파일을 이용하여 타깃 DB에 Import를 수행합니다. 원격지에서의 Import·Export를 지원하는 DB도 있으나 네트워크 지연을 최소화하기 위해 주로 기존 DB에서 Export를 수행한 후 생성된 파일을 신규 DB 서버로 수행하는 방식으로 데이터 마이그레이션이 이루어집니다.
Import·Export 방식은 DB/스키마/테이블 단위 등 수행 범위를 다양하게 지정할 수 있습니다. 데이터뿐만 아니라 테이블, 인덱스, 제약사항, 함수, 프로시저 등 DB 오브젝트에 대한 마이그레이션도 가능해 관리자가 별도로 오브젝트 생성문을 추출·수행할 필요가 없다는 장점이 있습니다.
이같은 편리성에도 불구하고 Import·Export 방식의 마이그레이션은 다음과 같은 문제점이 있습니다.
첫 번째는 길어지는 다운타임(Downtime)입니다. Export를 수행한 시점 이후에 기존 DB에서 발생하는 데이터 변동 건은 내보낸 파일에 포함되지 않으므로 신규 DB에 Import가 완료되는 순간까지 기존 DB와 연결된 서비스는 모두 중단해야 합니다. 데이터가 적은 소규모 DB는 간단하게 마이그레이션할 수 있으나 데이터 Export, 내보낸 파일 복사, Import 완료에 오랜 시간이 소요되는 대용량 DB에서는 서비스 다운타임이 길어질 수밖에 없습니다. 다운타임을 무한정 확보할 수 없기에 대용량 DB에서는 사용이 불가능한 방법으로 볼 수 있습니다.
두 번째 문제점은 롤백(Rollback) 시 역방향 마이그레이션으로 인한 서비스 지연입니다. 상상도 하기 싫지만 마이그레이션한 DB로 서비스를 오픈한 이후 심각한 문제가 발견되어 롤백을 해야 하는 경우를 가정하겠습니다. Import·Export 방식으로는 최초 마이그레이션 이후에 반영된 데이터만을 선별해 역방향 마이그레이션을 수행할 수 없습니다. 그러므로 또 다시 신규 DB에서 기존 DB로 전체 Import·Export 마이그레이션을 수행해야 하며 그만큼 서비스가 지연됩니다.
앞서 설명한 Import·Export 방식에 따른 데이터 마이그레이션의 한계를 극복하기 위한 대안으로 CDC 솔루션을 활용할 수 있습니다.
CDC는 Change Data Capture의 약자로 소스 DB의 로그 파일을 분석해 변경된 데이터를 추출하는 기술입니다. CDC를 이용해서 변경된 데이터만 타깃 DB에 반영하는 솔루션을 CDC 솔루션이라고 합니다.
각각의 DBMS에는 DB에서 발생한 모든 변경 이력을 순차적으로 기록하는 로그 파일이 존재합니다. 사용자가 특정 데이터의 변경을 요청하는 쿼리를 수행하면 데이터 변경과 동시에 이력이 로그 파일에 저장됩니다. DB에 장애가 발생하여 데이터가 깨진 경우 해당 로그 파일에 기록된 데이터 변경 내역을 이용해 복구할 수 있습니다.
CDC 솔루션은 소스 DB에서 이 로그 파일을 지속적으로 모니터링 및 분석하여 데이터 변경 내역만을 타깃 DB에 반영하므로 실시간에 가까운 데이터 동기화가 가능합니다.
다양한 CDC 솔루션이 시중에 출시되어 있습니다. 에스코어도 솔루션을 제공하고 있으며 특히 CDC 병렬 이벤트 추출 및 데이터 변경분의 병렬 반영 기능을 통해 고성능의 데이터 동기화를 지원합니다.
CDC 솔루션을 사용하더라도 최초 1회의 데이터 마이그레이션은 반드시 필요합니다. Import·Export 방식으로 초기 마이그레이션을 수행한다는 가정하에 [그림 2]의 순서로 살펴보겠습니다.(시간의 흐름을 나타내기 위해 DB 타임을 1부터 11까지 임의로 지정합니다.)
1. DB 타임=1의 시점에 Export로 데이터를 추출합니다. Export는 DB 타임=3의 시점에 종료되었으나 생성된 덤프 파일의 데이터는 DB 타임=1 시점의 것입니다.
2. 앞의 1에서 Export한 덤프 파일을 신규 DB 서버로 전송합니다.
3. 신규 DB 서버에서 Import를 수행하여 DB 타임=6의 시점에 종료합니다. 이때 신규 DB에 마이그레이션된 데이터는 DB 타임=1 시점의 것입니다.
4. CDC 솔루션을 이용하여 DB 타임=1 시점 이후 발생한 데이터 변경분을 타깃 DB에 동기화합니다.
5. 실시간 동기화를 통해 소스 DB와 타깃 DB의 데이터가 동일해진 후에 서비스를 전환합니다.
소스 DB에서는 Export를 시작한 DB 타임=1의 시점부터 데이터 변경이 지속적으로 발생하고 있습니다. 하지만 4에서 CDC 솔루션을 통해 DB 타임=1 이후의 데이터 변경분을 타깃 DB로 반영하기 시작하면서 소스 DB와 타깃 DB간의 갭이 사라지고 실시간 동기화 유지 중에 서비스를 전환함으로써 무중단에 가까운 마이그레이션이 가능합니다.
CDC 솔루션을 활용한 마이그레이션의 또 다른 이점은 신속한 롤백이 가능하다는 것입니다. [그림 3]은 서비스 전환 이후 신규 DB에서 기존 DB로의 역동기화를 수행하면 치명적인 이슈가 발생해 서비스 롤백을 해야 하는 상황을 나타내고 있습니다. 이때 CDC 솔루션을 사용하면 시간 지연 없이 바로 서비스 롤백을 실행할 수 있게 됩니다.
과거에는 안정적으로 운영 중인 DB를 변경하는 일이 극히 드물었습니다. 그러나 최근 클라우드 환경으로의 전환, 다양한 DBMS 도입 등 DB 변경이 잦아지면서 데이터 마이그레이션이 증가하고 있습니다. 또한 빅데이터의 중요성이 강조되면서 대규모 DB를 운영하는 사례도 많아지고 있습니다. 이로 인해 대용량 DB에 대한 효율적인 마이그레이션 전략을 고민하는 DB 관리자도 늘어나는 추세입니다. 그러나 큰 걱정은 하지 않아도 됩니다. 데이터 관리 기술의 결정체, CDC 솔루션을 잘 활용하면 대용량 마이그레이션이라는 도전을 수월하게 극복할 수 있을 것이기 때문입니다.
References
[1] http://www.datanet.co.kr/news/articleView.html?idxno=155922
[2] https://www.comworld.co.kr/news/articleView.html?idxno=49397
[3] http://wiki.hash.kr/index.php/%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98
[4] https://dataonair.or.kr/db-tech-reference/d-story/data-story/?mod=document&pageid=1&keyword=%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98&uid=63025
▶ 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶ 해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
에스코어(주) 소프트웨어사업부 컨버전스SW그룹
DBMS 신규 구축, 이기종 DB간 마이그레이션·연동 등 DBMS 관련 기술서비스 경험과 지식을 기반으로 에스코어 CDC 솔루션 8Sync®의 기술서비스를 담당하고 있습니다.