Canal のダウンロード、展開、および開始方法 (詳細)

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

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_23845083/article/details/131834011