更新时间: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位同名的文件夹。解码完成后,将找回的数据存入文件并返回路径。

约束

  1. 解析的WAL日志级别为logical。
  2. 数据表的复制标识必须为FULL,否则UPDATE和DELETE操作涉及到的被修改行不是全字段。
  3. WAL日志记录的数据修改操作所对应的业务表,从找回起始位置到目前不能执行VACUUM FULL操作,否则该表VACUUM FULL之前的DML操作不会被数据找回。
  4. WAL日志记录的数据修改操作所对应的业务表,从找回起始位置到目前,结构只能发生以下变化:
    1. 业务表结构不发生变化,即无DDL操作。
    2. 业务表在最后一列增加字段,且字段类型不能为带有默认值超过124字符长度的varchar类型。
    3. 业务表删除某一列字段。
    4. varchar字段增加原有长度。

    其余表结构变更导致该表relfilenode发生变化的场景不支持,表结构变更前的DML操作不会被数据找回。

  5. 每条WAL日志不能超过500MB。
  6. 不支持扩容前的xlog日志数据找回。
  7. 仅支持归档数据找回,且需要开启归档,若数据尚未归档,则无法通过本接口找回。
  8. OM_Agent在下载之前会验证本地已用空间是否大于总空间的80%,如果大于则会会报错(需要额外空间用于存放解码文件),报错信息为:"no enough space left on device, available space must be greater than 20%"。
  9. 下载失败或解码失败后,都会将下载的WAL日志文件进行清理,如果清理不成功,不会强制结束程序,只会把错误信息记录到DN的日志中。
  10. 由用户传入的时间,起始时间不能超出系统表gs_txn_lsn_time的最大时间,终止时间不能超过系统表gs_txn_lsn_time的最小时间,否则将会报错。
  11. 每次下载的xlog日志量不超过3GB。
  12. 每次解码数据量不超过max_process_memory 的10%。
  13. 不支持同一节点并发调用数据找回接口。

相关文档