逻辑解码概述
支持通过数据迁移工具定期向异构数据库(如Oracle等)进行数据同步,不具备实时数据复制能力。不足以支撑与异构数据库间并网运行实时数据同步的诉求。
图 1 逻辑复制
逻辑解码为逻辑复制提供事务解码的基础能力,openGauss使用SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。
一个逻辑复制槽表示一个更改流,这些更改可以在其它数据库中以它们在原数据库上产生的顺序被重播。逻辑复制槽,由每个逻辑日志的获取者维护一个。
注意事项
- 不支持DDL语句解码,在执行特定的DDL语句(例如普通表truncate或分区表exchange)时,可能造成解码数据丢失。
- 不支持列存、数据页复制的解码。
- 不支持级联备机进行逻辑解码。
- 当执行DDL语句(如alter table)后,该DDL语句前尚未解码的物理日志可能会丢失。
- 单条元组大小不超过1GB,考虑解码结果可能大于插入数据,因此建议单条元组大小不超过500MB。
- 目前默认不支持ssl连接,如果需要ssl连接需要设置guc参数ssl=on。
- 逻辑复制槽名称必须小于64个字符,且只包含小写字母、数字或者下划线中的一种或几种。
- 当前逻辑复制不支持MOT特性。
- 当逻辑复制槽所在数据库被删除后,这些复制槽变为不可用状态,需要用户手动删除。
- 仅支持utf-8字符集。
- 对多库的解码需要分别在库内创建流复制槽并开始解码,每个库的解码都需要单独扫一遍日志。
- 不支持强起,强起后需要重新全量导出数据。
- 不允许主备,多个备机同时使用同一个复制槽解码,否则会产生数据不一致。
- 只支持主机创建删除复制槽。
- 数据库故障重启或逻辑复制进程重启后,解码数据存在重复,用户需自己过滤。
- 计算机内核故障后,解码存在乱码,需手动或自动过滤。
- 当前备机逻辑解码,不支持开启极致RTO。
- 请确保在创建逻辑复制槽过程中长事务未启动,启动长事务会阻塞逻辑复制槽的创建。
- 不支持interval partition表复制。