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


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

对于捕获模式中的每个表,Db2 的复制功能会创建一个 change-data 表,其中包含该源表的所有更改。但是,change-data 表模式是静态的。如果您在捕获模式下为表更新模式,还必须更新其对应 change-data 表的 schema。Debezium Db2 连接器无法执行此操作。具有升级权限的数据库管理员必须为处于捕获模式的表更新模式。

警告

在在同一表中有新的架构更新前,完全执行架构更新过程非常重要。因此,建议是在单个批处理中执行所有 DDL,因此架构更新过程仅一次完成。

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

每种方法都有优势和缺点。

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

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

先决条件

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

流程

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

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

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

但是,当表处于捕获模式时,在更改列名称后,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. 在源表中导出数据。
    2. 截断源表。
    3. 更改源表并添加列。
    4. 将导出的数据加载到更改的源表中。
    5. 在源表的对应 change-data 表中导出数据。
    6. 截断 change-data 表。
    7. 更改 change-data 表并添加列。
    8. 将导出的数据加载到更改的 change-data 表中。
  5. 在 ASN 注册表中,将表标记为 INACTIVE。这会将旧的 change-data 表标记为 inactive,这样允许其中的数据保留,但不再更新它们。
  6. 重新初始化 ASN 捕获服务。
  7. 可选。重启连接器以查看更改事件中的更新列名称。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.