Die neueste Version von Flink CDC MySQL zum Synchronisieren von MySQL (1)

1. Übersicht

Flink CDC ist eine Reihe von Quellkonnektoren für Apache Flink®, die Change Data Capture (CDC) verwenden, um Änderungen aus verschiedenen Datenbanken abzurufen. CDC Connectors für Apache Flink integriert Debezium als Engine zur Erfassung von Datenänderungen. So können die Möglichkeiten von Debezium voll ausgeschöpft werden.
Fügen Sie hier eine Bildbeschreibung ein

2. Unterstützte Anschlüsse

Verbinder Datenbank Antrieb
mongodb-cdc MongoDB: 3.6, 4.x, 5.0 MongoDB-Treiber: 4.3.4
mysql-cdc MySQL: 5.6, 5.7, 8.0.x、RDS MySQL: 5.6, 5.7, 8.0.x、PolarDB MySQL: 5.6, 5.7, 8.0.x、Aurora MySQL: 5.6, 5.7, 8.0.x、MariaDB: 10.x、PolarDB X: 2.0.1 JDBC-Treiber: 8.0.28
ozeanbasis-cdc OceanBase CE: 3.1.x, 4.x、OceanBase EE: 2.x, 3.x, 4.x OceanBase-Treiber: 2.4.x
oracle-cdc Orakel: 11, 12, 19, 21 Oracle-Treiber: 19.3.0.0
postgres-cdc PostgreSQL: 9.6, 10, 11, 12, 13, 14 JDBC-Treiber: 42.5.1
sqlserver-cdc SQL Server: 2012, 2014, 2016, 2017, 2019 JDBC-Treiber: 9.4.1.jre8
tidb-cdc TiDB: 5.1.x, 5.2.x, 5.3.x, 5.4.x, 6.0.0 JDBC-Treiber: 8.0.27
db2-cdc Db2: 11,5 Db2-Treiber: 11.5.0.0
vitess-cdc Geschwindigkeit: 8.0.x, 9.0.x MySql JDBC-Treiber: 8.0.26

3. Unterstützte Flink-Versionen

Die folgende Tabelle zeigt die Versionskorrespondenz zwischen Flink CDC Connectors und Flink®:

Flink CDC-Version_ Flink-Version_
1.0.0 1.11.*
1.1.0 1.11.*
1.2.0 1.12.*
1.3.0 1.12.*
1.4.0 1.13.*
2.0.* 1.13.*
2.1.* 1.13.*
2.2.* 1.13.*、1.14.*
2.3.* 1.13.*、1.14.*、1.15.*、1.16.0
2.4.* 1.13.*、1.14*、1.15.*、1.16.*、1.17.0

4. Funktionen

Unterstützt das Lesen von Datenbank-Snapshots und kann Binlog auch dann weiter lesen, wenn ein Fehler auftritt, und eine genau einmalige Verarbeitung durchführen.

Mit dem CDC-Connector für die DataStream-API können Benutzer mehrere Datenbank- und Tabellenänderungen in einem einzigen Job verwenden, ohne Debezium und Kafka bereitzustellen.

Mit dem CDC-Connector für die Tabellen-/SQL-API können Benutzer mithilfe von SQL DDL CDC-Feeds erstellen, um Änderungen an einer einzelnen Tabelle zu überwachen.

5. Verwendung der Tabellen-/SQL-API

Wir benötigen ein paar Schritte, um einen Flink-Cluster mit den bereitgestellten Konnektoren einzurichten.

Zuerst haben wir die Version 1.17+ des Flink-Clusters (Java 8+) installiert.

Hinweis : Wenn Sie Flink installieren müssen, lesen Sie bitte den entsprechenden Blog des Autors zur Flink-Hochverfügbarkeitsclusterkonstruktion (Standalone-Modus).
Die in diesem Artikel verwendeten JAR-Pakete sind flink-connector-jdbc-3.1.1-1.17.jar und flink -sql-connector-mysql-cdc -2.2.1.jar

Laden Sie das Connector-SQL-JAR herunter (oder erstellen Sie es selbst ).

Legen Sie das heruntergeladene JAR-Paket in FLINK_HOME/lib/ ab.

Starten Sie den Flink-Cluster neu.

Hinweis : Derzeit müssen Versionen über 2.4 selbst kompiliert und erstellt werden. Der Autor dieses Artikels erstellt und lädt ihn selbst hoch

6. Verwenden Sie Flink CDC, um Streaming-ETL auf MySQL durchzuführen

Dieses Tutorial zeigt, wie Sie mit Flink CDC schnell ein Streaming-ETL für MySQL erstellen.

Angenommen, wir speichern Produktdaten in MySQL und synchronisieren sie mit einem anderen MySQL

In den folgenden Abschnitten stellen wir vor, wie Sie Flink Mysql CDC verwenden, um dies zu erreichen. Alle Übungen in diesem Tutorial werden in der Flink SQL-CLI durchgeführt und der gesamte Prozess verwendet die Standard-SQL-Syntax ohne Java/Scala-Code oder IDE-Installation.

Die Architektur wird wie folgt beschrieben:
Fügen Sie hier eine Bildbeschreibung ein

7. Vorbereitung der Umgebung

Sie müssen die installierte MySQL-Datenbank vorbereiten. Einzelheiten zur Installation von MySQL-Daten finden Sie im Blog des Autors Ubuntu-Datenbankinstallation (MySQL)

Hinweis: Für andere Betriebssysteme lesen Sie bitte das Tutorial zur Datenbankinstallation entsprechend anderen Blogs

8. Erstellen Sie Tabellen mit Flink DDL in der Flink SQL CLI

Starten Sie die Flink SQL CLI mit dem folgenden Befehl:

./bin/sql-client.sh

Wir sollten den Begrüßungsbildschirm des CLI-Clients sehen.
Fügen Sie hier eine Bildbeschreibung einAktivieren Sie zunächst das Checkpointing alle 3 Sekunden

-- Flink SQL                   
Flink SQL> SET execution.checkpointing.interval = 3s;

Bearbeiten Sie den Flink-SQL-Code der Quelldatenbank wie folgt:

CREATE TABLE products (
 id INT NOT NULL,
 name STRING,
 description STRING,
 PRIMARY KEY(id) NOT ENFORCED
) WITH (
 'connector' = 'mysql-cdc', #引入的CDC jar包驱动,没有引入会报错提示需要引入
 'hostname' = '192.168.50.163',#源数据库连接host地址,可以根据自己的具体设置,此处为笔者本机的
 'port' = '3306', #源数据库端口
 'username' = 'root',#源数据库账号
 'password' = '*****',#源数据库密码
 'database-name' = 'mydb',#源数据库
 'table-name' = 'products'#源数据库表
);

Führen Sie die folgende Anweisung in Flink SQL aus, um eine Tabelle zu erstellen, die geänderte Daten aus der entsprechenden Datenbanktabelle erfasst

-- Flink SQL
Flink SQL> CREATE TABLE products (
    id INT,
    name STRING,
    description STRING,
    PRIMARY KEY (id) NOT ENFORCED
  ) WITH (
    'connector' = 'mysql-cdc',
    'hostname' = '192.168.50.163',
    'port' = '3306',
    'username' = 'root',
    'password' = '****',
    'database-name' = 'mydb',
    'table-name' = 'products'
  );

Bearbeiten Sie den Flink-SQL-Code der Zieldatenbank wie folgt:

CREATE TABLE product (
    id INT,
    name STRING,
    description STRING,
    PRIMARY KEY (id) NOT ENFORCED
  ) WITH (
    #引入的jdbc jar包驱动,没有引入会报错提示需要引入 flink-connector-jdbc
    'connector' = 'jdbc',
    #目标数据库连接url地址,可以根据自己的具体设置,此处为笔者本机的。部分高版本的MySQL需要添加useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
    'url' = 'jdbc:mysql://192.168.50.163:3306/mydb1?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC',
    #需要访问的数据库驱动
    'driver' = 'com.mysql.cj.jdbc.Driver',
    #目标数据库账号
    'username' = 'root',
    #目标据库密码
    'password' = '***',
    #目标数据库表
    'table-name' = 'product'
  );

Führen Sie die folgende Anweisung in Flink SQL aus, um eine Zuordnungsbeziehung zwischen der Tabelle, die die geänderten Daten erfasst, und der Zieldatenbanktabelle zu erstellen

-- Flink SQL
Flink SQL> CREATE TABLE product (
    id INT,
    name STRING,
    description STRING,
    PRIMARY KEY (id) NOT ENFORCED
  ) WITH (
    'connector' = 'jdbc',
    'url' = 'jdbc:mysql://192.168.50.163:3306/mydb1?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC',
    'driver' = 'com.mysql.cj.jdbc.Driver',
    'username' = 'root',
    'password' = 'root',
    'table-name' = 'product'
  );

9. Laden Sie die Quelldatentabelle in das Ziel-MySQL

Verwenden Sie Flink SQL, um die Tabellenprodukt- und Tabellenabfrageprodukttabelle in das Ziel-MySQL zu schreiben.

-- Flink SQL
Flink SQL> insert into product select * from products;

Die spezifischen Betriebsschritte sind wie folgt:
Fügen Sie hier eine Bildbeschreibung ein

Dies ist die Quelldatenbank. Der Vorgang fügt Daten hinzu, wie in der folgenden Abbildung dargestellt:
Fügen Sie hier eine Bildbeschreibung ein
Der Synchronisierungsvorgang der Zieldatenbank ist wie in der folgenden Abbildung dargestellt
Fügen Sie hier eine Bildbeschreibung ein

10. Flinken Sie über die visuelle Oberfläche, um laufende JOBS anzuzeigen

Aktivieren Sie das rote Kästchen als laufende Synchronisierungsaufgabe.
Fügen Sie hier eine Bildbeschreibung ein
Bisher wurde der erste Abschnitt der MySQL-Synchronisierung mit Flink CDC erklärt, und seine komplexen Vorgänge werden später aktualisiert

Acho que você gosta

Origin blog.csdn.net/weixin_43114209/article/details/131553658
Recomendado
Clasificación