首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS DMS中,负载顺序和并行负载一起工作吗?

在AWS DMS中,负载顺序和并行负载一起工作吗?
EN

Stack Overflow用户
提问于 2021-07-14 19:38:08
回答 1查看 1K关注 0票数 2

我有两个表--在Microsoft中我们称之为tbl_parenttbl_child,并试图将这些表的数据传输到AWS极光PostgreSQL。

在这里,tbl_childtbl_parent上有一个外键引用,因此为了避免在满载期间出现FK问题,我提到了tbl_parent比表tbl_child更高的加载顺序。在aws 文档中也提出了同样的观点。

因此,在加载顺序设置下,我希望只有在用tbl_child完成完全插入之后才会将数据插入到tbl_parent中。

此外,我还希望对子表执行并行加载,因此我已经指定了表设置规则,以按照aws 文档中的建议执行并行加载。

由于某些原因,我看到tbl_child中的数据甚至在tbl_parent加载完成之前就被插入了,并且我得到了外键问题,如下所示.

2021-07-14T18:53:43 TARGET_LOAD W: Load命令输出: psql: /usr/lib 64/libcom_err.so.2:没有可用的版本信息(/rdsdbbin/awsdms/awsdms/lib/libgssapi_krb5.so.2所要求的) psql: /usr/lib 64/libcom_err.so.2:没有可用的版本信息(/rdsdbbin/awsdms/lib/librb5.so.3所要求的)错误:插入或更新表"tbl_child“违反外键约束"tbl_child_tbl_parent”_fkey“DETAIL: Key (parent_id)=(1468137)”不在表"tbl_parent“中。(csv_target.c:1018)

如果有帮助,请在下面查找映射规则json

代码语言:javascript
复制
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "101",
            "rule-name": "101",
            "object-locator": {
                "schema-name": "dbo",
                "table-name": "tbl_parent"
            },
            "rule-action": "include",
            "filters": [],
            "load-order": 2
        },
        {
            "rule-type": "selection",
            "rule-id": "102",
            "rule-name": "102",
            "object-locator": {
                "schema-name": "dbo",
                "table-name": "tbl_child"
            },
            "rule-action": "include",
            "filters": [],
            "load-order": 1
        },
        {
            "rule-type": "table-settings",
            "rule-id": "131",
            "rule-name": "Parallel_Range_Child",
            "object-locator": {
                "schema-name": "dbo",
                "table-name": "tbl_child"
            },
            "parallel-load": {
                "type": "ranges",
                "columns": [
                    "child_id"
                ],
                "boundaries": [
                    [
                        "100"
                    ],
                    [
                        "200"
                    ],
                    [
                        "300"
                    ]
                ]
            }
        }
    ]
}
EN

回答 1

Stack Overflow用户

发布于 2021-07-15 06:38:48

如果希望严格控制加载顺序,例如,完成一个表然后完成另一个表,则必须设置maxFullloadsubtasks=1。

实际上,为了避免此类问题,一种方法是禁用目标db中的FK/RI检查,这些选项在Server/MySQL/Oracle中是a/v,但在PgSQL中似乎不是a/v。总之,您使用DMS进行full + CDC的步骤可能:

  1. 在目标db中创建包含主键的基本表模式
  2. DMS满载
  3. 创建FK/RIs/index和其他db对象
  4. DMS CDC
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68384148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档