tencent cloud

文档反馈

增量迁移预检查

最后更新时间:2024-11-04 10:49:39

    检查详情

    当迁移类型选择增量迁移时,需要对如下条件进行检查,否则校验失败。
    源库的 wal_level 必须为 logical
    源库 max_replication_slotsmax_wal_senders 参数需要大于待迁移的库总数(保留额外连接数)。
    源库待迁移表中 persistence 属性必须为 p(永久表),否则不支持 replication,故而也无法做逻辑迁移。
    待迁移表中不能存在 unlogged table,否则无法迁移。
    建议迁移有主键的表,否则会出现数据结果不一致,不建议用户迁移无主键表。
    如果待迁移的表无主键,且不含可复制标识(即 REPLICA IDENTITY 属性设置为 NOTHING),则校验任务报警告。
    如果待迁移的表无主键,并且包含无法使用 = 操作符的字段类型(json/point/polygon/txid_snapshot/xml),则校验失败,需要按照提示修复无主键的表,或者取消勾选主键表,否则无法继续任务。

    修复方法

    修改 wal_level/max_replication_slots/max_wal_senders 参数

    修改参数 wal_levelmax_replication_slotsmax_wal_senders 的方法如下。
    1. 登录源数据库。
    说明:
    如源数据库为自建数据库,需要登录至数据库的运行服务器上,进入数据库数据主目录中,一般为 $PGDATA。
    如源数据库为其他云数据库,请使用相关云平台的参数修改方法。
    如需要修改目标实例的参数,请通过 在线支持 处理。
    2. 通常进入 postgresql.conf 文件中,打开此文件,修改对应参数。
    wal_level = logical
    max_replication_slots = 10 //根据实际情况修改
    max_wal_senders = 10 //根据实际情况修改
    3. 修改完成后,重启数据库实例。
    4. 登录至数据库实例中,使用以下命令查看参数值是否设置正确:
    postgres=> select name,setting from pg_settings where name='wal_level';
    name | setting
    -----------+---------
    wal_level | logical
    (1 row)
    postgres=> select name,setting from pg_settings where name='max_replication_slots';
    name | setting
    -----------------------+---------
    max_replication_slots | 10
    (1 row)
    postgres=> select name,setting from pg_settings where name='max_wal_senders';
    name | setting
    -----------------+---------
    max_wal_senders | 10
    (1 row)
    5. 重新执行校验任务。

    修改待迁移表的 REPLICA IDENTITY 属性

    一般不建议迁移无主键的表,可能会导致数据结果不一致。如果待迁移的表无主键,且不含可复制标识(即 REPLICA IDENTITY 属性设置为 NOTHING),则校验任务报警告。
    出现警告,建议用户参考如下方法修改表的属性参数。
    ALTER TABLE schemaName.tableName REPLICA IDENTITY FULL;
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持