티비마이그레이터

티비마이그레이터(tbMigrator)는 오라클(Oracle) 등 다른 DBMS로 작성된 데이터베이스를 티베로(Tibero) DBMS로 마이그레이션하는 툴이다. tb마이그레이터라고도 쓴다.
목차
개요
티비마이그레이터는 이름에서 유추할 수 있듯, 데이터베이스 테이블(tb prefix) 간의 마이그레이션(Migration)을 지원하는 자동화 도구 또는 스크립트이다. 보통 다음과 같은 시나리오에서 사용된다:
- 데이터베이스 스키마 변경에 따른 기존 데이터 이전
- 운영 환경 간 데이터 이전 (ex. dev → prod)
- 이기종 데이터베이스 간 마이그레이션 (ex. MySQL → PostgreSQL)
- 시계열 데이터, 로그 데이터 등의 정기적 백업 및 이동
주요 기능
- 다중 DBMS 지원
- MySQL ↔ Oracle, PostgreSQL ↔ SQL Server 등 이기종 DB 호환
- 증분 마이그레이션
- CDC(Change Data Capture) 기반 실시간 동기화
- 테이블 구조 추출 및 생성
- 기존 테이블의 DDL(데이터 정의 언어) 을 추출하여 타깃 시스템에 적용
- 인덱스, 제약 조건, 외래 키 등을 유지
- 데이터 추출 및 적재
- SELECT * FROM source_table 형태의 데이터 덤프
- 대량의 데이터를 효율적으로 전송 (배치 처리, 청크 기반 처리 등)
- 데이터 변환(Transform)
- 컬럼 이름 변경, 타입 변환 (ex. INT → BIGINT)
- 날짜 형식 표준화
- enum 또는 코드 매핑
- 데이터 검증(Validation)
- 레코드 수 비교
- 샘플 해시 비교
- 외래 키/제약 조건 일관성 체크
- 에러 로깅 및 롤백 처리
- 실패 시 재시도 또는 롤백 로직 내장
- 마이그레이션 로그 생성 및 저장
- 스키마 변환
- 자동 데이터 타입 매핑 (예: VARCHAR → TEXT)
- 병렬 처리
- 멀티스레드로 대용량 데이터 빠르게 처리
사용 방식 예시
bash tbMigrator --source-db mysql://user:pass@localhost/db1 \ --target-db postgres://user:pass@localhost/db2 \ --tables users,orders,products \ --mode transform-and-load \ --log-level info
위와 같이 CLI 형태로 사용될 수 있으며, .yaml, .json, .toml 등 설정 파일 기반으로도 동작할 수 있다.
아키텍처 구성 예시
plaintext [Source DB] ↓ [Extract Layer] ↓ [Transform Layer] ↓ [Validation Layer] ↓ [Target DB]
- 모듈 구성 예시
- SourceConnector : MySQL, MSSQL, Oracle 등에서 데이터 추출
- Transformer : 컬럼 매핑, 데이터 정제
- TargetWriter : PostgreSQL, BigQuery 등 타깃에 쓰기 수행
- Logger : 이력 저장, 에러 추적
- CLI Runner : 파라미터 처리 및 전체 실행 흐름 제어
설치 및 사용법
- 환경 요구사항
- Java 11+ 또는 Python 3.8+
- 소스/타겟 DB 드라이버
- 기본 명령어
bash # 설정 파일 기반 실행 python tbmigrator.py --config config.yaml # 직접 파라미터 지정 tbmigrator \ --source jdbc:mysql://localhost:3306/source_db \ --target jdbc:postgresql://target_host:5432/target_db \ --table employees
설정 파일 예시 (YAML)
yaml source: type: mysql url: jdbc:mysql://src_host:3306/hr username: admin password: secure123 target: type: postgresql url: jdbc:postgresql://tgt_host:5432/hr_archive schema: public tables: - name: employees chunk_size: 10000 # 배치 단위 columns: emp_id: INT → BIGINT # 타입 재정의 - name: departments skip_errors: true # 오류 무시 옵션
성능 최적화 전략
- 인덱스 일시 제거: 타겟 DB에서 로드 전 인덱스 비활성화
- 배치 크기 조정: 메모리 오버헤드 방지를 위해 chunk_size 조절
- 네트워크 압축: 대역폭 제약 시 SSL/TLS 압축 활성화
주요 사용 사례
- Case 1
- 클라우드 DB 이전
온프레미스 Oracle → AWS RDS(PostgreSQL) 마이그레이션
- 특징: 2TB 데이터, 99.9% 데이터 무결성 유지
- Case 2
- 데이터 웨어하우스 구축
운영 DB(MySQL) → 분석용 Redshift 이관
- 주기: 매일 새벽 2시 증분 동기화
한계 및 주의사항
- LOB 데이터: BLOB/CLOB은 별도 처리 필요
- 트리거/제약조건: 마이그레이션 중 일시 해제 권장
- 버전 호환성: 일부 구형 DBMS 미지원
대안 도구 비교
도구 장점 단점 tbMigrator 경량화, 실시간 동기화 GUI 부재 AWS DMS 완전관리형 서비스 비용 발생 Talend 시각적 ETL 디자인 리소스 소모 큼
같이 보기
이 문서는 로고 수정이 필요합니다.