kettle從入門到精通 第六十九課 ETL之kettle kettle cdc mysql,輕鬆實現實時增量同步

慕容尘轩發表於2024-06-14

1、之前kettle cdc mysql的時候使用的方案是canal+kafka+kettle,今天我們一起學習下使用kettle的外掛Debezium直接cdc mysql。

 注:CDC (Change Data Capture) 是一種技術,用於捕獲和同步資料庫中的更改。

1)Debezium步驟解析mysql binlog日誌。

2)json input步驟解析json字串。

3)switch-case 根據op欄位進行路由。

4)create、delete、update、ddl是寫日誌步驟,模擬後續操作。

2、Debezium步驟配置如下(只輸出dml),更多屬性配置參考Debezium官網。如下圖所示:

3、switch-case配置如下,不做過多介紹。

4、binlog解析之後的dml語句對應的json字串結構

CREATE

{
    "ts_ms": 1718273338000,
    "db": "test",
    "table": "t1",
    "op": "CREATE",
    "after": "{\"id\":6,\"name\":\"金剛葫蘆娃\",\"createtime\":1718297698000}",
    "pk": "{\"id\":6}"
}

UPDATE

{
    "ts_ms": 1718273345000,
    "db": "test",
    "table": "t1",
    "op": "UPDATE",
    "before": "{\"id\":6,\"name\":\"金剛葫蘆娃\",\"createtime\":1718297698000}",
    "after": "{\"id\":6,\"name\":\"金剛葫蘆娃plus\",\"createtime\":1718297698000}",
    "pk": "{\"id\":6}"
}

DELETE

{
    "ts_ms": 1718273369000,
    "db": "test",
    "table": "t1",
    "op": "DELETE",
    "before": "{\"id\":6,\"name\":\"金剛葫蘆娃plus\",\"createtime\":1718297698000}",
    "pk": "{\"id\":6}"
}

5、Debezium步驟配置中設定ddl為true(輸出dml和ddl),更多屬性配置參考Debezium官網。如下圖所示:

6、binlog解析之後的ddl語句對應的json字串結構

DROP TABLE
{
    "ts_ms": 1718274150072,
    "db": "test",
    "table": "t3",
    "op": "ddl",
    "sql": "DROP TABLE `test`.`t3`"
}
CREATE TABLE
 
{
    "ts_ms": 1718274165789,
    "db": "test",
    "table": "t3",
    "op": "ddl",
    "ddl_type": "CREATE",
    "sql": "CREATE TABLE `t3` (\n `id` bigint NOT NULL AUTO_INCREMENT,\n `name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,\n `createtime` datetime DEFAULT NULL,\n PRIMARY KEY (`id`)\n ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci"
}

 

相關文章