更新时间:2025-05-29 GMT+08:00
逻辑解码数据找回功能
逻辑解码对外提供单节点DML数据找回能力,从WAL日志是否归档的角度分为在线日志找回和归档日志找回:
- 在线数据找回:使用pg_logical_get_area_changes函数,可以在线找回相关DML数据,具体使用参考pg_logical_get_area_changes函数的使用方法。
- 归档数据找回:OM_Agent通过pg_logical_get_area_changes函数提供OBS上归档日志的找回能力,OM_Agent从OBS下载已经归档的日志到对应节点上,并创建与WAL日志文件前8位同名的文件夹。解码完成后,将找回的数据存入文件并返回路径。
约束
- 解析的WAL日志级别为logical。
- 数据表的复制标识必须为FULL,否则UPDATE和DELETE操作涉及到的被修改行不是全字段。
- WAL日志记录的数据修改操作所对应的业务表,从找回起始位置到目前不能执行VACUUM FULL操作,否则该表VACUUM FULL之前的DML操作不会被数据找回。
- 每条WAL日志不能超过500MB。
- 不支持扩容前的Xlog日志数据找回。
- 集群的每个分片都会生成一个结果文件,多个文件不会进行合并。
- 仅支持归档数据找回,且需要开启归档,若数据尚未归档,则无法通过本接口找回。
- OM_Agent在下载之前会验证本地已用空间是否大于总空间的80%,如果大于则会会报错(需要额外空间用于存放解码文件),报错信息为:"no enough space left on device, available space must be greater than 20%"。
- 下载失败或解码失败后,都会将下载的WAL日志文件进行清理,如果清理不成功,不会强制结束程序,只会把错误信息记录到DN的日志中。
- 由用户传入的时间,起始时间不能超出系统表gs_txn_lsn_time的最大时间,终止时间不能超过系统表gs_txn_lsn_time的最小时间,否则将会报错。
- 不支持同一节点并发调用数据找回接口。
- 如果进行了节点替换,不支持节点替换前的数据找回。
- 只支持直连DN方式的数据找回。
- 旧版本升级提交到新版本时,如果未基线化,则需要执行基线化后才可以使用数据找回功能,且只支持对基线化后新产生的Xlog日志进行数据找回,升级前产生的Xlog日志无法解析。
- 默认支持1年内的数据找回,超过1年的数据将被自动清除。如需找回超过1年的数据,需在清理前调整GUC参数logical_replication_dictionary_retention_time的值。
父主题: 逻辑解码