このプロジェクトについて

## 概要 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は阿里雲開発者コミュニティにも同期されます