1。概要
- canal [kə'næl]、水路/パイプ/溝と訳されます。
- これは Alibaba 傘下のオープンソース プロジェクトであり、純粋な Java で開発されています。
- データベースの増分ログ分析に基づいて、増分データのサブスクリプションと消費を提供する主な目的は、MySQL データベースの増分ログ分析に基づいており、現在主に mysql をサポートしています。
2 メリットとデメリット
- アドバンテージ:
与业务代码完全解耦,API完全解耦,异步处理,且可以做到准实时,用着很舒服;
- 欠点:
- Binlog を開いた後は、データベースに追加のオーバーヘッドが発生し、パフォーマンスに影響します。
- Canal はサードパーティによって実装されているため、学習コストが必要です (学習には終わりがなく、スキルは圧倒的なものではありません)。
2 つの一般的なシナリオ
- Canal は Ali Otter ミドルウェアの一部であり、Otter はリモート データベース間の Ali の同期フレームワークです。
- キャッシュを更新し、リアルタイム データ同期による DB の負荷を軽減するために使用されます。
- ビジネス データをキャプチャし、変更テーブルを追加してジッパー テーブルを作成します。
- ビジネステーブルの新しく追加された変更データを取得して、リアルタイムの統計を作成します。
3 動作原理
Mysql の Binlog は、すべての DDL および DML (データ クエリ ステートメントを除く) ステートメントをイベントの形式で記録し、ステートメントの実行に費やされた時間も記録します。主にバックアップとデータ同期に使用されます。Canal は主に Binlog をベースにしたテクノロジーです。
在mysql中开启binlog日志记录,完成主从复制。
canal 会伪装(实现了mysql的binlog日志的传输协议)为 mysql的一个从机实例! 向mysql的主机发送dump请求。
主机将binlog日志发送给canal,有canal解析,解析后,可以发送到任意地方。
Binlog には 3 つのモードがあります: STATEMENT、ROW、MIXED- STATEMENT は、実行された SQL ステートメントを記録します。
- ROW レコードは実際の行データ レコードです。
- MIXED は 1+2 を記録し、最初は 1 のモードで記録します。
(Binlog に関する部分はあまり詳しく説明しません。興味がある場合は、Baidu でダウンロードして、以下のテキストを入力してください)
4 クイックスタート
4.1 準備
4.1.1 mysql バイログを開く
詳細については、私が書いた別の記事「Mysql データベースが binlog を開く」を参照してください。
4.1.2 Canal ファイルパッケージのダウンロード
公式ダウンロードアドレス:https://github.com/alibaba/canal/releases
(本次下载的 canal 是版本号为:1.1.6)
解凍後、以下のフォルダができます。
4.1.3 設定ファイルの変更
conf\example ファイルに移動し、instance.properties 設定を変更します。
#position info,需要改成自己的数据库信息
canal.instance.master.address = 127.0.0.1:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
# username/password,需要改成自己的数据库信息
canal.instance.dbUsername=root
canal.instance.dbPassword=root
canal.instance.connectionCharset = UTF-8
#table regex 数据库表的过滤
canal.instance.filter.regex=canal_test.*
4.1.4 開始運河
./bin/startup.sh