debezium对表结构变更Schema evolution支持

debezium对表结构变更的支持
debezium版本1.9(flinkcdc2.4.1使用此版本)

(1)Mysql

默认是支持的。
在这里插入图片描述

(2)postgres

pg从9.4支持日志输出功能,但由于其限制 不支持捕捉表结构变更。

PostgreSQL’s logical decoding feature was introduced in version 9.4. It is a mechanism that allows the extraction of the changes that were committed to the transaction log and the processing of these changes in a user-friendly manner with the help of an output plug-in. The output plug-in enables clients to consume the changes.

在这里插入图片描述

(3)sqlserver

sqlserver是比较奇怪的方式,他会存储表结构。
在这里插入图片描述

如果需要支持schema 变更则需要手动对数据库执行命令
先通过指定新capture_instance名称。创建新的capture对象,从而更新sqlserver cdc对表结构的描述。在停掉之前的capture_instance。就能捕捉到新结构的数据。
在这里插入图片描述

(4)oracle

在这里插入图片描述
在这里插入图片描述

当debezium解析redo logs 得到tableSchema。
在这里插入图片描述

{
  "schema": {
  ...
  },
  "payload": {
    "source": {
      "version": "1.9.7.Final",
      "connector": "oracle",
      "name": "server1",
      "ts_ms": 1588252618953,
      "snapshot": "true",
      "db": "ORCLPDB1",
      "schema": "DEBEZIUM",
      "table": "CUSTOMERS",
      "txId" : null,
      "scn" : "1513734",
      "commit_scn": "1513754",
      "lcr_position" : null,
      "rs_id": "001234.00012345.0124",
      "ssn": 1,
      "redo_thread": 1
    },
    "databaseName": "ORCLPDB1", 
    "schemaName": "DEBEZIUM", //
    "ddl": "CREATE TABLE \"DEBEZIUM\".\"CUSTOMERS\" \n   (    \"ID\" NUMBER(9,0) NOT NULL ENABLE, \n    \"FIRST_NAME\" VARCHAR2(255), \n    \"LAST_NAME" VARCHAR2(255), \n    \"EMAIL\" VARCHAR2(255), \n     PRIMARY KEY (\"ID\") ENABLE, \n     SUPPLEMENTAL LOG DATA (ALL) COLUMNS\n   ) SEGMENT CREATION IMMEDIATE \n  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 \n NOCOMPRESS LOGGING\n  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645\n  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1\n  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)\n  TABLESPACE \"USERS\" ", 
    "tableChanges": [ 
      {
        "type": "CREATE", 
        "id": "\"ORCLPDB1\".\"DEBEZIUM\".\"CUSTOMERS\"", 
        "table": { 
          "defaultCharsetName": null,
          "primaryKeyColumnNames": [ 
            "ID"
          ],
          "columns": [ 
            {
              "name": "ID",
              "jdbcType": 2,
              "nativeType": null,
              "typeName": "NUMBER",
              "typeExpression": "NUMBER",
              "charsetName": null,
              "length": 9,
              "scale": 0,
              "position": 1,
              "optional": false,
              "autoIncremented": false,
              "generated": false
            },
            {
              "name": "FIRST_NAME",
              "jdbcType": 12,
              "nativeType": null,
              "typeName": "VARCHAR2",
              "typeExpression": "VARCHAR2",
              "charsetName": null,
              "length": 255,
              "scale": null,
              "position": 2,
              "optional": false,
              "autoIncremented": false,
              "generated": false
            },
            {
              "name": "LAST_NAME",
              "jdbcType": 12,
              "nativeType": null,
              "typeName": "VARCHAR2",
              "typeExpression": "VARCHAR2",
              "charsetName": null,
              "length": 255,
              "scale": null,
              "position": 3,
              "optional": false,
              "autoIncremented": false,
              "generated": false
            },
            {
              "name": "EMAIL",
              "jdbcType": 12,
              "nativeType": null,
              "typeName": "VARCHAR2",
              "typeExpression": "VARCHAR2",
              "charsetName": null,
              "length": 255,
              "scale": null,
              "position": 4,
              "optional": false,
              "autoIncremented": false,
              "generated": false
            }
          ]
        }
      }
    ]
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用Flink CDC处理schema变更时,可以通过以下步骤进行处理: 1. Flink CDC支持使用Debezium来捕获数据库的变动并写入消息中间件。Debezium可以监测到数据库中结构的变化,例如列的添加、修改或删除。 2. 当数据库中的结构发生变化时,Flink CDC会将这些变更记录下来,并将其写入到消息中间件中。这样其他的服务可以通过订阅消息中间件来获取这些变更信息。 3. 在Flink CDC中,可以使用适当的source来读取消息中间件中的变更数据。针对schema变更,可以使用Flink的Table API或SQL来处理这些变更。 4. 对于schema变更,可以根据具体的业务需求来设计相应的逻辑。例如,可以使用Flink的DDL语句来动态创建或修改结构,或者使用Flink的schema evolution功能来适应变更后的结构。 总之,Flink CDC可以帮助捕获数据库的schema变更,并将其写入到消息中间件中。通过使用Flink的Table API或SQL,可以对这些变更进行灵活的处理,以适应不同的业务需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [flink-cdc 实现MySQL变更捕获](https://blog.csdn.net/weixin_42942484/article/details/122194166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [FlinkCDC](https://blog.csdn.net/qq_43585580/article/details/125786735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值