更新时间:2024-12-10 GMT+08:00
分享

配置只读延迟库

操作场景

通过给只读实例设置延迟时间,可以配置只读延迟库,只读实例会延迟指定时间后再回放从主实例接收的wal日志。

如果您不小心误删了数据,只读实例会延迟指定时间后删除,您可以在这段时间内通过中止wal日志回放阻止只读实例回放wal日志,之后将数据从只读实例dump出来,重新在主实例插入,进而快速完成数据修复。

约束限制

  • 如果您需要使用该功能,请联系客服提交开启配置只读延迟库的申请。
  • 支持RDS for PostgreSQL 12及以上版本的只读实例。
  • 在配置“指定时间点回放”功能后,由于PostgreSQL数据库原理会导致主机与只读实例复制中断,期间若主实例wal日志轮转,会造成只读实例脱节(主实例数据无法同步到只读实例)。脱节后若用户需要恢复,需要先“重置回放时间”,然后联系客服进行只读实例恢复操作(恢复时间与实例数据大小及主实例资源使用情况有关)。

配置只读延迟库

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域。
  3. 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
  4. 在实例列表中,单击实例名称前的,单击目标只读实例的名称,进入只读实例的管理页面。
  5. 进入“只读延迟”页面或刷新页面,会查询并显示当前时刻的只读延迟信息。

    图1 只读延迟信息
    表1 只读延迟信息说明

    参数

    说明

    当前wal回放状态

    只读实例当前wal日志回放状态。通过切换开关状态可以暂停/恢复wal日志回放。

    • 开关打开:正常回放。
    • 开关关闭:停止回放。

    真实延迟时间

    页面加载以及刷新时,只读实例wal日志回放真实的延迟时间,单位ms。

    该值和设置的延迟时间会略有不同,例如:主实例无业务时没有wal同步,真实延迟时间就是0ms。

    设置延迟时间

    用户设置的延迟时间,单位ms。单击进行编辑。

    延迟时间不宜设置过长,否则在主实例业务较大时,wal日志大量在只读实例堆积,会导致磁盘空间占满,并引发只读实例脱节。

    最新回放的wal日志位点

    只读实例最新回放的wal日志。

    最新接受的wal日志

    只读实例最新接收到的wal日志。

指定时间点回放

  1. 在只读实例“概览”页面,暂停wal日志回放。

    图2 暂停回放

  2. 打开回放开关,选择“回放至指定时间”,表示回放到指定时间点后暂停回放。

    图3 回放至指定时间

    选择“自动回放”,表示恢复至正常回放状态,只读会连续回放接收到的wal日志。

  3. 选择“可回放时间范围”内的某个时间点,单击“确定”,设置回放目标时间点。

    只读将回放wal日志到离目标时间点最近且在目标时间点之前的事务提交点。

  4. 单击“重启实例”,开始恢复到设置的时间点。

    图4 重启实例

  5. 查看回放状态。

    图5 回放中
    图6 回放完成

  6. 指定时间点回放结束后,需要重置回放时间并重启实例,才能恢复正常回放。

    1. 单击“重置回放时间”,在弹框中,单击“确定”。

      重启实例后仍会存在延迟回放,延迟时间取决于参数“recovery_min_apply_delay”的取值。如果想立刻回放到指定时间,需要将该参数设置为0。

      图7 重置回放时间
    2. 单击“重启实例”。
      图8 重启实例
    3. 查看回放状态恢复正常。
      图9 恢复正常回放

相关文档