프로젝트 소개
## 소개
canal [kə'næl]은 수로/파이프/도랑을 의미하며, 주 용도는 MySQL 데이터베이스 증분 로그 파싱을 기반으로 증분 데이터 구독 및 소비를 제공하는 것입니다. 초기 알리바바는 크로스 데이터센터 동기화 요구로 인해 비즈니스 트리거 방식에서 데이터베이스 로그 파싱으로 점차 전환하며 많은 증분 구독 및 소비 비즈니스를 파생시켰습니다.
로그 증분 구독 및 소비 기반 비즈니스에는 데이터베이스 미러링, 데이터베이스 실시간 백업, 인덱스 구축 및 실시간 유지보수(분할 이종 인덱스, 역인덱스 등), 비즈니스 캐시 갱신, 비즈니스 로직이 포함된 증분 데이터 처리가 포함됩니다.
현재 canal이 지원하는 소스 MySQL 버전은 5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x입니다.
## 작동 원리
### MySQL 마스터-슬레이브 복제 원리
- MySQL 마스터는 데이터 변경을 바이너리 로그(binary log, 바이너리 로그 이벤트로 기록)에 기록합니다.
- MySQL 슬레이브는 마스터의 binary log 이벤트를 릴레이 로그(relay log)에 복사합니다.
- MySQL 슬레이브는 relay log의 이벤트를 재생하여 데이터 변경을 자체 데이터에 반영합니다.
### canal 작동 원리
- canal은 MySQL 슬레이브의 상호작용 프로토콜을 모방하여 MySQL 슬레이브로 위장하고, MySQL 마스터에 dump 프로토콜을 전송합니다.
- MySQL 마스터는 dump 요청을 받은 후 canal에 binary log를 푸시하기 시작합니다.
- canal은 binary log 객체(원래는 바이트 스트림)를 파싱합니다.
## 주요 버전 업데이트 설명
### canal 1.1.x 버전
- 전체 성능 테스트 및 최적화로 150% 향상(#726)
- Prometheus 모니터링 기본 지원(#765)
- Kafka 메시지 전송 기본 지원(#695)
- 알리바바 클라우드 RDS의 binlog 구독 기본 지원(자동 마스터-슬레이브 전환/oss binlog 오프라인 파싱 해결)
- Docker 이미지 기본 지원(#801)
### canal 1.1.4 버전
- WebUI 기능 도입, canal-admin 프로젝트 신설, WebUI 기반 canal 동적 관리 지원(구성, 작업, 로그 등 온라인 화이트 스크린 운영 능력 포함)
## 문서
Home, Introduction, QuickStart(Docker, Kafka/RocketMQ, 알리바바 클라우드 RDS, Prometheus), Canal Admin(QuickStart, Guide, ServerGuide, Docker), AdminGuide, ClientExample, ClientAPI, Performance, DevGuide, BinlogChange(MySQL 5.6/MariaDB), TableMetaTSDB, ReleaseNotes, Download, FAQ를 포함한 전체 문서를 제공합니다.
## 다국어
canal은 클라이언트-서버 모드를 채택하며, 상호작용 프로토콜은 protobuf 3.0을 사용하므로 클라이언트는 다양한 언어로 소비 로직을 구현할 수 있습니다:
- Java 클라이언트: 공식 예제
- C# 클라이언트: CanalSharp
- Go 클라이언트: canal-go
- PHP 클라이언트: canal-php
- Python 클라이언트: canal-python
- Rust 클라이언트: canal-rs
- Nodejs 클라이언트: canal-nodejs
canal은 MySQL binlog 증분 획득 및 파싱 도구로서 변경 기록을 MQ 시스템(예: Kafka/RocketMQ)에 전달할 수 있으며, MQ의 다국어 능력을 활용합니다.
## canal 기반 개발 도구
- canal2sql(binlog 기반 SQL 생성)
## 관련 오픈소스 및 제품
- canal 소비 측 오픈소스 프로젝트: Otter
- 알리바바 Oracle 데이터 마이그레이션 동기화 도구: yugong
- 알리바바 오프라인 동기화 오픈소스 프로젝트: DataX
- 알리바바 데이터베이스 커넥션 풀 오픈소스 프로젝트: Druid
- 알리바바 실시간 데이터 동기화 도구: DTS
## 문제 피드백
- 이슈 보고: GitHub Issues
- 프로젝트 이슈는 알리바바 클라우드 개발자 커뮤니티에도 동기화됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.