3.9. 在 Debezium 连接器的捕获模式中更新 Db2 表的模式


虽然 Debezium Db2 连接器可以捕获模式更改,以更新模式,但您必须与数据库管理员合作,以确保连接器继续生成更改事件。这是 Db2 实施复制的方式所需要的。

对于捕获模式中的每个表,Db2 中的复制功能会创建一个 change-data 表,其中包含该源表的所有更改。但是 change-data 表模式是静态的。如果以捕获模式为表更新模式,那么您还必须更新其对应 change-data 表的模式。Debezium Db2 连接器无法做到这一点。具有升级特权的数据库管理员必须更新处于捕获模式的表的模式。

警告

在同一表中有新的模式更新前,完全执行模式更新非常重要。因此,建议只在单一批处理中执行所有 DDL,因此仅执行 schema 更新过程。

更新表模式通常有两个步骤:

每种方法都有优缺点。

3.9.1. 为 Debezium Db2 连接器执行离线 schema 更新

在执行离线 schema 更新前,您可以停止 Debezium Db2 连接器。虽然这是安全的模式更新过程,但可能不适用于具有高可用性要求的应用程序。

先决条件

  • 处于捕获模式的一个或多个表需要 schema 更新。

流程

  1. 暂停更新数据库的应用程序。
  2. 等待 Debezium 连接器流传输所有未流更改事件记录。
  3. 停止 Debezium 连接器。
  4. 对源表 schema 应用所有更改。
  5. 在 ASN 注册表中,将更新的模式标记为 INACTIVE
  6. 重新初始化 ASN 捕获服务
  7. 通过运行 Debezium UDF 从捕获模式中删除表,将带有旧模式的源表从捕获模式中删除
  8. 通过运行 Debezium UDF 将源表添加到捕获模式 ,方法是运行 Debezium UDF 以将表添加到捕获模式
  9. 在 ASN 注册表中,将更新的源表标记为 ACTIVE
  10. 重新初始化 ASN 捕获服务。
  11. 恢复更新数据库的应用程序。
  12. 重启 Debezium 连接器。

3.9.2. 为 Debezium Db2 连接器执行在线 schema 更新

在线 schema 更新不会导致应用程序和数据处理的停机时间。也就是说,在执行在线 schema 更新前,不会停止 Debezium Db2 连接器。另外,在线模式更新步骤比离线 schema 更新的步骤简单。

但是,当表处于捕获模式时,在更改为列名称后,Db2 复制功能将继续使用旧列名称。新的列名称不会出现在 Debezium 更改事件中。您必须重启连接器来查看更改事件中的新列名称。

先决条件

  • 处于捕获模式的一个或多个表需要 schema 更新。

在表末尾添加列时的步骤

  1. 锁定您要更改其模式的源表。
  2. 在 ASN 注册表中,将锁定的表标记为 INACTIVE
  3. 重新初始化 ASN 捕获服务。
  4. 将所有更改应用到源表的 schema。
  5. 将所有更改应用到对应的 change-data 表的 schema。
  6. 在 ASN 注册表中,将源表标记为 ACTIVE
  7. 重新初始化 ASN 捕获服务。
  8. 可选。重启连接器,查看更改事件中更新的列名称。

在表的中间添加列时的步骤

  1. 锁定要更改的源表。
  2. 在 ASN 注册表中,将锁定的表标记为 INACTIVE
  3. 重新初始化 ASN 捕获服务。
  4. 对于要更改的每个源表:

    1. 在 source 表中导出数据。
    2. 截断源表。
    3. 更改源表并添加列。
    4. 将导出的数据加载到更改的源表中。
    5. 在源表对应的 change-data 表中导出数据。
    6. 截断 change-data 表。
    7. 更改 change-data 表并添加列。
    8. 将导出的数据加载到更改的 change-data 表中。
  5. 在 ASN 注册表中,将表标记为 INACTIVE。这会将旧的 change-data 表标记为不活动状态,允许其中的数据保留,但不再更新它们。
  6. 重新初始化 ASN 捕获服务。
  7. 可选。重启连接器,查看更改事件中更新的列名称。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.