Surreal-Sync -- 데이터 마이그레이션 및 동기화
Surreal-Sync는 다양한 데이터베이스 소스에서 SurrealDB로 데이터를 마이그레이션하기 위한 CLI 도구로, CDC(Change Data Capture)를 통한 전체 동기화 및 증분 동기화를 지원합니다.
지원 소스
| 소스 | 전체 동기화 | 증분 CDC | 방법 |
|---|---|---|---|
| MongoDB | 예 | 예 | 변경 스트림(Change streams) |
| MySQL | 예 | 예 | 트리거 기반 CDC + 시퀀스 체크포인트 |
| PostgreSQL (트리거) | 예 | 예 | 트리거 기반 CDC + 시퀀스 체크포인트 |
| PostgreSQL (wal2json) | 예 | 예 | wal2json 플러그인을 사용한 논리 복제 |
| Neo4j | 예 | 예 | 타임스탬프 기반 추적 |
| JSONL 파일 | 예 | 해당 없음 | JSON Lines에서 배치 가져오기 |
| Apache Kafka | 예 | 예 | 중복 제거 기능이 있는 컨슈머 구독 |
빠른 시작
# surreal-sync 설치 (Rust 바이너리)
cargo install surreal-sync
# PostgreSQL에서 전체 동기화 (트리거 기반)
surreal-sync from postgres trigger-full \
--connection-string "postgresql://user:pass@localhost/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# PostgreSQL에서 증분 CDC 동기화 (wal2json)
surreal-sync from postgres wal2json \
--connection-string "postgresql://user:pass@localhost/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# MongoDB에서 전체 동기화
surreal-sync from mongo full \
--connection-string "mongodb://localhost:27017/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# JSONL에서 배치 가져오기
surreal-sync from jsonl import \
--file data.jsonl \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# Kafka에서 소비
surreal-sync from kafka consume \
--bootstrap-servers "localhost:9092" \
--topic my-events \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
CLI 패턴
surreal-sync from <SOURCE> <COMMAND> \
--connection-string [CONNECTION STRING] \
--surreal-endpoint [SURREAL ENDPOINT] \
--surreal-username [SURREAL USERNAME] \
--surreal-password [SURREAL PASSWORD] \
--to-namespace <NS> \
--to-database <DB>
주요 기능
- 자동 스키마 추론 및 SurrealDB 테이블 생성
- 소스 기본 키에서 레코드 ID 매핑
- 관계 추출 및 그래프 에지 생성
- 구성 가능한 배치 크기 및 병렬 처리
- 체크포인트 추적으로 재개 가능한 동기화
- Kafka 컨슈머용 중복 제거
전체 문서
전체 가이드는 메인 스킬의 규칙 파일을 참조하세요:
- rules/surreal-sync.md -- 소스 구성, 스키마 매핑, CDC 설정, 충돌 해결 및 프로덕션 배포
- surrealdb/surreal-sync -- 업스트림 저장소