逻辑解码概述

    支持通过数据迁移工具定期向异构数据库(如Oracle等)进行数据同步,不具备实时数据复制能力。不足以支撑与异构数据库间并网运行实时数据同步的诉求。

    图 1 逻辑复制

    逻辑解码为逻辑复制提供事务解码的基础能力,openGauss使用SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。

    一个逻辑复制槽表示一个更改流,这些更改可以在其它数据库中以它们在原数据库上产生的顺序被重播。逻辑复制槽,由每个逻辑日志的获取者维护一个。

    注意事项

    • 不支持DDL语句解码。
    • 不支持列存、数据页复制的解码。
    • 不支持备机与级联备机进行逻辑解码。
    • 使用逻辑解码功能时,禁止进行数据库在线扩容。
    • 使用逻辑解码功能时,禁止执行VACUUM FULL。
    • 单条元组大小不超过1GB,考虑解码结果可能大于插入数据,因此建议单条元组大小不超过500MB。
    • openGauss支持解码的数据类型为:INTEGER、BIGINT、SMALLINT、TINYINT、SERIAL、SMALLSERIAL、BIGSERIAL、FLOAT、DOUBLE PRECISION、DATE、TIME[WITHOUT TIME ZONE]、TIMESTAMP[WITHOUT TIME ZONE]、CHAR(n)、VARCHAR(n)、TEXT。
    • 目前默认不支持ssl连接,如果需要ssl连接需要设置guc参数ssl=on。
    • 当前逻辑复制不支持MOT特性。
    • 当逻辑复制槽所在数据库被删除后,这些复制槽变为不可用状态,需要用户手动删除。
    • 仅支持utf-8字符集。
    • 对多库的解码需要分别在库内创建流复制槽并开始解码,每个库的解码都需要单独扫一遍日志。
    • 不支持强起,强起后需要重新全量导出数据。