使用适用于 Linux、Unix、Windows 的 D IBM b2 和亚马逊RDS数据库 (Db2LUW) 作为来源 AWS DMS - AWS 数据库迁移服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 Linux、Unix、Windows 的 D IBM b2 和亚马逊RDS数据库 (Db2LUW) 作为来源 AWS DMS

您可以使用 () 将数据从适用于 Linux、Unix、Windows 和 Amazon 的 Db2 RDS (Db2LUW) 数据库迁移到任何支持的目标数据库。IBM AWS Database Migration Service AWS DMS

有关 Linux、Unix、Windows 上的 Db2 版本以及RDS AWS DMS 支持作为源代码的版本的信息,请参阅的来源 AWS DMS

您可以使用安全套接字层 (SSL) 来加密 Db2 LUW 终端节点和复制实例之间的连接。有关与 Db2 LUW 端点SSL一起使用的更多信息,请参阅将 SSL 与 AWS Database Migration Service

使用 Db2 LUW 作为源代码时的先决条件 AWS DMS

在使用 Db2 LUW 数据库作为源之前,需要满足以下先决条件。

要启用持续复制(也称为更改数据捕获 (CDC)),请执行以下操作:

  • 将数据库设置为可恢复,这 AWS DMS 需要捕获更改。如果数据库配置参数 LOGARCHMETH1 和/或 LOGARCHMETH2 设置为 ON,则数据库是可恢复的。

    如果您的数据库是可恢复的,则 AWS DMS 可以在ARCHIVE LOG需要时访问 Db2。

  • 确保DB2事务日志可用,并有足够的保留期供其处理 AWS DMS。

  • DB2需要SYSADMDBADM授权才能提取事务日志记录。向用户账户授予以下权限:

    • SYSADMDBADM

    • DATAACCESS

    注意

    对于仅限满载的任务,DMS用户帐户需要DATAACCESS权限。

  • 当使用IBMDB2LUW版本 9.7 作为源时,请按CurrentLSN如下方式设置额外的连接属性 (ECA):

    CurrentLSN=LSN其中,LSN指定要从中开始复制的日志序列号 (LSN)。或者 CurrentLSN=scan

  • 使用 Amazon RDS for Db2 LUW 作为源时,请确保存档日志可供使用。 AWS DMS由于 AWS托管的 Db2 数据库会尽快清除存档日志,因此您应该延长日志的可用时间。例如,要将日志保留时间延长到 24 小时,请运行以下命令:

    db2 "call rdsadmin.set_archive_log_retention( ?, 'TESTDB', '24')"

    有关 Amazon for Db2 LUW 过程RDS的更多信息,请参阅《亚马逊RDS关系数据库服务用户指南》中的 Amazon for Db2 存储过程参考

使用 Db2 LUW 作为源代码时的限制 AWS DMS

AWS DMS 不支持群集数据库。但是,您可以LUW为集群的每个终端节点定义单独的 Db2。例如,您可以使用集群中的任何一个节点创建完全加载迁移任务,然后从每个节点创建单独的任务。

AWS DMS 不支持源 Db2 LUW 数据库中的BOOLEAN数据类型。

使用持续复制 (CDC) 时,存在以下限制:

  • 当包含多个分区的表被截断时, AWS DMS 控制台中显示DDL的事件数等于分区的数量。这是因为 Db2 DDL 为每个分区单独LUW记录一个分区。

  • 分区表不支持以下DDL操作:

    • ALTER TABLE ADD PARTITION

    • ALTER TABLE DETACH PARTITION

    • ALTER TABLE ATTACH PARTITION

  • AWS DMS 不支持从DB2高可用性灾难恢复 (HADR) 备用实例进行持续的复制迁移。备用实例无法访问。

  • 不支持该DECFLOAT数据类型。因此,在正在进行的复制过程中,对DECFLOAT列的更改将被忽略。

  • 不支持该RENAMECOLUMN语句。

  • 对多维聚类 (MDC) 表执行更新时,每次更新在 AWS DMS 控制台中都显示为 INSERT + DELETE。

  • 如果未启用任务设置 “在复制中包含LOB列”,则在进行复制期间,任何包含LOB列的表都将暂停。

  • 对于 Db2 LUW 版本 10.5 及更高版本,将忽略包含存储数据的可变长度字符串列。 out-of-row 此限制仅适用于为数据类型如VARCHAR和的列使用扩展行大小创建的表VARGRAPHIC。要解决此限制,请将表移至具有较大页面大小的表格空间。有关更多信息,请参阅如果我想更改DB2表空间的页面大小,该怎么办

  • 对于正在进行的复制,DMS不支持迁移DB2LOAD实用程序在页面级别加载的数据。相反,请使用使用SQL插入的IMPORT实用程序。有关更多信息,请参阅 IMPORT 和 LOAD 实用程序之间的区别

  • 当复制任务正在运行时,CREATETABLEDDLs只有在使用该DATACAPTURECHANGE属性创建表时才会DMS捕获。

  • DMS使用 Db2 数据库分区功能 (DPF) 时有以下限制:

    • DMS无法协调DPF环境中 Db2 节点间的事务。这是由于IBMDB2READLOGAPI接口内的限制造成的。在中DPF,事务可能跨越多个 Db2 节点,具体取决于数据的DB2分区方式。因此,您的DMS解决方案必须独立地从每个 Db2 节点捕获事务。

    • DMS通过在多个DMS源端点1上设置connectNode为,可以从DPF集群中的每个 Db2 节点捕获本地事务。此配置对应于DB2服务器配置文件中定义的逻辑节点号db2nodes.cfg

    • 单个 Db2 节点上的本地事务可能是更大的全局事务的一部分。DMS在目标上独立应用每个本地事务,无需与其他 Db2 节点上的事务进行协调。这种独立的处理可能会导致复杂性,尤其是在分区之间移动行时。

    • 当从多个 Db2 节点DMS进行复制时,无法保证目标上的操作顺序正确,因为每个 Db2 节点都独立DMS应用操作。您必须确保独立于每个 Db2 节点捕获本地事务适用于您的特定用例。

    • 从DPF环境迁移时,我们建议先运行不带缓存事件的满载任务,然后运行CDC仅限缓存的任务。我们建议每个 Db2 节点运行一个任务,从您使用StartFromContext端点设置设置的满载开始时间戳或LRI(日志记录标识符)开始。有关确定复制起点的信息,请参阅 Su IBMpport 文档中的查找复制起始LRI值LSN或值

  • 对于正在进行的复制 (CDC),如果您计划从特定时间戳开始复制,则必须将StartFromContext连接属性设置为所需的时间戳。

  • 目前,DMS不支持 Db2 pureScale 功能,DB2LUW该功能是可用于扩展数据库解决方案的扩展。

使用 Db2 LUW 作为源时的端点设置 AWS DMS

您可以使用端点设置来配置 Db2 LUW 源数据库,就像使用额外的连接属性一样。您可以在使用 AWS DMS 控制台创建源端点时指定设置,也可以使用中的create-endpointAWS CLI命令和--ibm-db2-settings '{"EndpointSetting": "value", ...}'JSON语法。

下表显示了可以将 Db2 LUW 用作源的端点设置。

名称 描述

CurrentLSN

对于正在进行的复制 (CDC),请使用指定CurrentLSN要开始复制的日志序列号 (LSN)。

MaxKBytesPerRead

每次读取的最大字节数,以NUMBER值表示。默认值为 64 KB。

SetDataCaptureChanges

启用持续复制 (CDC) 作为BOOLEAN值。默认值为 true。

StartFromContext

对于正在进行的复制 (CDC),使用StartFromContext来指定日志从何处开始复制的下限。 StartFromContext接受不同形式的值。有效值包括:

  • timestamp(UTC)。例如:

    '{"StartFromContext": "timestamp:2021-09-21T13:00:00"}'
  • NOW

    对于 10.5 及更高IBMDB2LUW版本,NOW再加上 “当前LSN:扫描”,可从最新LSO版本开始任务。例如:

    '{"CurrentLSN": "scan", "StartFromContext": "NOW"}'
  • 具体的LRI。例如:

    '{"StartFromContext": "0100000000000022CC000000000004FB13"}'

要确定日志文件的LRI/LSN范围,请按以下示例所示运行db2flsn命令。

db2flsn -db SAMPLE -lrirange 2

该示例的输出类似于以下内容。

S0000002.LOG: has LRI range 00000000000000010000000000002254000000000004F9A6 to 000000000000000100000000000022CC000000000004FB13

在该输出中,日志文件为 S0000002。 LOGStartFromContextLRI值为范围末尾的 34 字节。

0100000000000022CC000000000004FB13

IBMDb2 的源数据类型 LUW

使用 Db2 LUW 作为源的数据迁移 AWS DMS 支持大多数 Db2 LUW 数据类型。下表显示了使用时支持的 Db2 LUW 源数据类型 AWS DMS 以及 AWS DMS 数据类型的默认映射。有关 Db2 LUW 数据类型的更多信息,请参阅 Db2 文档LUW

有关如何查看目标中映射的数据类型的信息,请参阅使用的目标终端节点对应的部分。

有关 AWS DMS 数据类型的更多信息,请参见AWS Database Migration Service 的数据类型

Db2 LUW 数据类型

AWS DMS 数据类型

INTEGER

INT4

SMALLINT

INT2

BIGINT

INT8

DECIMAL(p, s)

NUMERIC(p, s)

FLOAT

REAL8

DOUBLE

REAL8

REAL

REAL4

DECFLOAT(p)

如果精度为 16,则REAL8;如果精度为 34,则 STRING

GRAPHIC(n)

WSTRING,适用于长度大于 0 且小于或等于 127 的双字节字符的固定长度图形字符串

VARGRAPHIC(n)

WSTRING,适用于长度大于 0 且小于或等于 16,352 个双字节字符的可变长度图形字符串

LONGVARGRAPHIC(n)

CLOB,适用于长度大于 0 且小于或等于 16,352 个双字节字符的可变长度图形字符串

CHARACTER(n)

STRING,适用于长度大于 0 且小于或等于 255 的固定长度双字节字符串

VARCHAR(n)

STRING,适用于长度大于 0 且小于或等于 32,704 的可变长度双字节字符串

LONGVARCHAR(n)

CLOB,适用于长度大于 0 且小于或等于 32,704 的可变长度双字节字符串

CHAR(n) FOR BIT DATA

BYTES

VARCHAR(n) FOR BIT DATA

BYTES

LONG VARCHAR FOR BIT DATA

BYTES

DATE

DATE

TIME

TIME

TIMESTAMP

DATETIME

BLOB(n)

BLOB

最大长度为 2147483647 个字节

CLOB(n)

CLOB

最大长度为 2147483647 个字节

DBCLOB(n)

CLOB

最大长度为 1073741824 个双字节字符

XML

CLOB