本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用适用于 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需要
SYSADM
或DBADM
授权才能提取事务日志记录。向用户账户授予以下权限:SYSADM
或DBADM
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-endpoint
AWS CLI命令和--ibm-db2-settings '{"
JSON语法。EndpointSetting"
:
"value"
, ...
}'
下表显示了可以将 Db2 LUW 用作源的端点设置。
名称 | 描述 |
---|---|
|
对于正在进行的复制 (CDC),请使用指定 |
|
每次读取的最大字节数,以NUMBER值表示。默认值为 64 KB。 |
|
启用持续复制 (CDC) 作为BOOLEAN值。默认值为 true。 |
|
对于正在进行的复制 (CDC),使用
要确定日志文件的LRI/LSN范围,请按以下示例所示运行
该示例的输出类似于以下内容。
在该输出中,日志文件为 S0000002。 LOGStartFromContextLRI值为范围末尾的 34 字节。
|
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 |