Flink CDC2.0 クイック スタート デモの例 (Jar ドッキング、非 SQL)

重要!

  Flink CDC という名前には Flink が付いていますが、注意してください。簡単なデモをローカルで構築する場合、flink 環境をダウンロードせずにローカルで実行できます。

  FlinkCDC は本質的には jar パッケージであり、導入後はその簡単な機能を表示する main メソッドを記述します。(初心者の私は、FlinkCDC を ik ワードセグメンテーションに似たプラグインだと考えていたので、最初に Flink をダウンロードしました...)

準備

  • Maven の使用方法を知る必要があります
  • ≤FlinkCDC 1.4.0 バージョンは MySQL5.6 以降を使用できます。FlinkCDC は 5.7 以降である必要があります

  Flink CDC 公式には MySQL 5.7 以降が必要ですが、Flink CDC バージョン 1.4 は現在 MySQL 5.6 上で問題なく実行できます。デモを構築するだけで十分です。5.6 を使用して運用環境を構築する場合は、慎重にテストしてください。

バイナリログを有効にする

MySQL 構成ファイル my.cnf を変更する必要があります。そのファイルに次の内容を追加または追加してください。

[mysqld]
log-bin=mysql-bin
server-id=1
binlog_format=ROW

MAC ユーザーは、このファイルを etc ディレクトリに手動で作成する必要があります。Windows ユーザーは、他のブログを参照して binlog を有効にすることができます (この手順は非常に簡単なので、内容はさらに多くなります)。

バイナリログを確認する

MySQLを再起動する必要があります

次に、次のステートメントを実行して、正常に有効になっているかどうかを確認します。

show variables like '%log_bin%';

実行後、log_bin が ON であることが表示されます。

show variables like 'binlog_format';

実行後、binlog_format が ROW であることが表示されます。

実行結果が正しければ、次のステップに進むことができます。間違っている場合は、まず修正してください。

新しいプロジェクトを作成してテストする

IDE を開き、新しい空の Maven プロジェクトを作成します。

ここでは、私の Flink CDC バージョン 1.4.0 と Flink CDC 2.0 の両方を正常に使用できます。自分で選択することもできます (古いバージョンを使用している友人の場合は、2.0.x の座標をコメントアウトして、以下のコメント内の座標に置き換えてください)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>flinkcdc-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>*.dsp.redispositive.Application</mainClass>
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <flink-version>1.13.0</flink-version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.12</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients_2.12</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner-blink_2.12</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-mysql-cdc</artifactId>
            <version>2.0.2</version>
        </dependency>
        <!--老版本的用户打开这个注释,把上面2.0注释掉
        <dependency>
            <groupId>com.alibaba.ververica</groupId>
            <artifactId>flink-connector-mysql-cdc</artifactId>
            <version>1.4.0</version>
        </dependency>-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>
    </dependencies>
</project>

 テスト用に新しい main メソッドを作成します。

 注: Flink CDC2.0 パッケージ名は変更されており、「alibaba」はインポートに含まれていません。コードを貼り付けると、パッケージが自動的にインポートされます。

import com.alibaba.ververica.cdc.connectors.mysql.table.StartupOptions;
import com.alibaba.ververica.cdc.debezium.StringDebeziumDeserializationSchema;
import org.apache.commons.collections.CollectionUtils;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import com.alibaba.ververica.cdc.connectors.mysql.MySQLSource;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MySqlSourceExample {

	public static void main(String[] args) throws Exception {

		SourceFunction<String> sourceFunction = MySQLSource.<String>builder()
				.hostname("localhost")
				.port(3306)
				.databaseList("cdc_test") //订阅的库
				.username("root")
				.password("root")
				.deserializer(new StringDebeziumDeserializationSchema())
				.build();

		StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

		env.addSource(sourceFunction)
				.print()
				.setParallelism(1);

		env.execute();
	}
}

テストを実施する

main メソッドを実行します。起動が遅いので、しばらくお待ちください。

次のような問題が表示された場合、デモの実行には影響しないため、無視してかまいません。 

データベース監視ライブラリを変更するだけで、次の binlog ログ情報が表示されます。これは成功を意味します。

❤ 役に立ったら、3つ続けてクリックしてください~~

おすすめ

転載: blog.csdn.net/qq_20051535/article/details/121071915