创建复制集
在Red Hat集群主机上的Db2 Warehouse复制源上初始化复制目标后,就可以创建复制集。 复制集是源数据库中要在目标数据库上复制的表的集合。
开始之前
- 集群主机上源的基本授权令牌。1
- 复制源数据库和复制目标数据库的主机名。
- 复制源数据库和复制目标数据库的外部端口号。2
- 要复制的表和模式集合的复制集名称 (如果有)。
- 用于表复制的源模式和表列表。
- 模式和表包含和排除模式复制的模式。
1 您需要创建基本授权令牌以运行 cURL 请求。 要创建令牌,请运行以下命令:
echo <source_db_username>:<source_db_password> | base64其中 source 指的是源数据库或目标数据库。
2 您可以通过运行以下命令来检索复制源数据库和复制目标数据库的外部端口号:
oc get svc | grep <db2_instance_id> | grep db2u-engn-svc | grep 50001 | sed 's/.*50001://' | sed 's/\/TCP.*//')关于本任务
通常,复制集将包含要保持事务一致性的表,例如应用程序所使用的所有表。 对于复制集,所有从属事务都将以源落实顺序应用于目标,而其他事务将以并行方式应用。
注意: 请注意以下限制:
- 请勿在多个复制集中包含同一源表。
- 如果要复制按行组织的表,请确保源表和目标表都具有强制实施的主键。
- 如果必须将唯一约束添加到按列组织的表以进行复制,请确保先取消激活并重新激活数据库,然后再将该表添加到复制集。 如果未执行此步骤,那么表上的 Db2 DELETE 操作的性能将显着下降。 对性能的此影响是由于 Db2 补充日志记录直到在系统中的所有数据成员上刷新关联的高速缓存之后才检测到约束。
过程
结果
executionState=COMPLETED 和 overallJobResult=PASS 的响应消息时,添加到复制集的表已准备好进行复制。 在返回这些值之前,请检查响应中的错误代码,消息和解决方法。下表列出了复制集创建 API 调用可能的 HTTP 状态代码和响应消息。 它还包含用于显示响应语法的样本代码。
| HTTP 状态码 | 原因 | 响应模型 |
|---|---|---|
| 202 | 复制集创建已启动 | 用户请求返回成功响应以完成 API 调用 (样本值): |
| 200 | 已成功对 API 进行状态检查 | 在响应中查找 executionState=COMPLETED 和 overallJobResult=PASS 。 |
| 4xx | 客户机请求错误 | 由于请求语法格式不正确或存在其他客户机问题,因此未实现用户请求: |
| 5xx | 服务器错误 | 用户请求似乎有效,但由于服务器存在问题而未实现: |
示例
curl --insecure -X PUT --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Basic ZHNhZG06MDNRVWlMczFhcmoxb3ky' -d '{ "sourceHost": "dr-source1.ibm.com", "sourceDatabase": "BLUDB", "sourcePort": 32621, "targetHost": "dr-target2.ibm.com", "targetDatabase": "BLUDB", "targetPort": 30138, "tables": [ { "sourceSchema": "DRADMIN1", "sourceTable": "T5R", "skipLoad": false }, { "sourceSchema": "DRADMIN2", "sourceTable": "T5C", "skipLoad": false } ] }'
'https://dr-source1.ibm.com:31023/dr/v1/replicationset/DEMOREPLSET1/DEMORE0001/table'以下示例显示了使用生成的作业号 9 检查复制集创建状态的命令语法。 请参阅步骤 2。
curl --insecure -X GET --header 'Accept: application/json' --header 'Authorization: Basic ZHNhZG06MDNRVWlMczFhcmoxb3ky'
'https://dr-source1.ibm.com:30674/dr/v1/replicationset/progress/5'