このプロジェクトについて
## 概要
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リクエストを受信後、binary logをcanalにプッシュし始めます
- 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
## 問題フィードバック
- issue報告:GitHub Issues
- プロジェクトのIssuesは阿里雲開発者コミュニティにも同期されます
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.