SpringBoot は MySQL テーブル データを監視するために Canal を統合します

ここに画像の説明を挿入します

準備

運河とは

  • Canal は、データベース増分ログ解析に基づく Alibaba のオープンソース データ同期およびサブスクリプション コンポーネントであり、MySQL や Oracle などの主流データベースをサポートしています。
  • データベースの増分ログを解析することで、データベース変更イベントを下流のコンシューマーに転送します。

Spring Boot における Canal の役割と利点

  • Spring Boot は Spring アプリケーション開発を簡素化するために使用されるフレームワークで、Spring アプリケーションを構築するための高速かつ便利な方法を提供します。
  • Canal は、Spring Boot で信頼性の高い高性能リスニング ツールとして使用し、データベース変更イベントをリアルタイムでキャプチャできます。
  • Canalを統合することで、Spring BootでMySQLテーブルデータを簡単に監視でき、きめ細かいデータ同期やサブスクリプションなどの機能を実現できます。

準備

MySQL データベースのインストールと構成

  1. MySQL データベースをインストールし、データベースが正常に動作することを確認します。
  2. binlog を有効にしてデータベースを監視するように設定します。MySQL 設定ファイルを編集するmy.cnfか、次の設定をセクションmy.iniに追加します。[mysqld]
# 日志文件名
log-bin=mysql-bin
# 配置日志记录模式为“行级模式”
binlog_format=ROW
# 需要监听的数据库1
binlog-do-db=ddz
# 需要监听的数据库2 
binlog-do-db=ddz1
  1. データベースを再起動し、データベースが正常に開かれるかどうかを確認します。
# 查看是否开启日志
show variables like '%log_bin%';

ここに画像の説明を挿入します

# 查看日志记录模式
show variables like '%binlog_format%';

ここに画像の説明を挿入します

インストールカナル

  1. カナル公式サイトからサービスアイテムをダウンロードしてください。
    ここに画像の説明を挿入します
    以下は、Canal のいくつかのコンポーネントの詳細な説明です。

canal.adapter は、主にデータの同期と変換に使用されるアダプターである Canal のサブプロジェクトです。
canal.admin は、Canal のバックエンド管理システムです。
canal.deployer は、ワンクリックの導入および管理機能を提供し、Canal の導入、運用および保守を簡素化できます。
canal.exampleは Canal のサンプルプロジェクトです。

  1. ファイルを解凍して\canal.deployer-1.1.7-SNAPSHOT\conf\canal.propertiesファイルを変更し、プロジェクトで使用する必要があるサービス モードを選択しますtcp
# tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = tcp
  1. \canal.deployer-1.1.7-SNAPSHOT\conf\example\instance.propertiesファイルを変更します。
# 需要监听的数据库连接地址
canal.instance.master.address=127.0.0.1:3306
# 用户名
canal.instance.dbUsername=数据库用户名
# 密码
canal.instance.dbPassword=数据库密码
# 需要监听的数据库正则,当前是监听所有的数据库
canal.instance.filter.regex=.*\\..*
# 不监听的数据库正则
canal.instance.filter.black.regex=mysql\\.slave_.*
  1. Canal プロジェクトを開始するには、\canal.deployer-1.1.7-SNAPSHOT\bin、start 、startup.batまたはを入力しますstartup.sh
    ここに画像の説明を挿入します
    次のページがポップアップ表示され、起動が成功したことが示されます。
    ここに画像の説明を挿入します

プロジェクトの統合

依存関係をインポートする

ここでインポートするのは、ボスによってカプセル化された依存関係であり、それらを直接使用できます。

<dependency>
    <groupId>top.javatool</groupId>
    <artifactId>canal-spring-boot-starter</artifactId>
    <version>1.2.1-RELEASE</version>
</dependency>

構成情報の追加

canal:
  server: 127.0.0.1:11111 # 本地启动的canal服务,默认启动的监听端口是11111
  destination: example # 配置好的监听模块

リスニングモジュールの名前はディレクトリ名と同じであり、運河設定ファイルでも同じように設定されます。
ここに画像の説明を挿入します

リスニングクラスを作成する

アノテーションの使用: @CanalTable(value = “データベーステーブル名”)

import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;
@Slf4j
@Component
@CanalTable(value = "user")
public class UserHandler implements EntryHandler<User> {
    
    
    @Override
    public void insert(User user) {
    
    
        log.info("User_insert:{}", user.toString());
    }

    @Override
    public void update(User before, User after) {
    
    
        log.info("User_update_before:{}", before.toString());
        log.info("User_update_after:{}", after.toString());
    }

    @Override
    public void delete(User user) {
    
    
        log.info("User_delete:{}", user.toString());
    }
}

テスト

これで、データベースを操作するときに、テーブルの追加、変更、削除が監視されます。
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_45626288/article/details/132657612