更新时间:2024-11-12 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日志记录的数据修改操作所对应的业务表,从找回起始位置到目前,结构只能发生以下变化:
- 业务表结构不发生变化,即无DDL操作。
- 业务表在最后一列增加字段,且字段类型不能为带有默认值超过124字符长度的varchar类型。
- 业务表删除某一列字段。
- varchar字段增加原有长度。
其余表结构变更导致该表relfilenode发生变化的场景不支持,表结构变更前的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的最小时间,否则将会报错。
- 每次下载的xlog日志量不超过3GB。
- 每次解码数据量不超过max_process_memory 的10%。
- 不支持同一节点并发调用数据找回接口。
父主题: 逻辑解码