配置只读延迟库
操作场景
通过给只读实例设置延迟时间,可以配置只读延迟库,只读实例会延迟指定时间后再回放从主实例接收的wal日志。
如果您不小心误删了数据,只读实例会延迟指定时间后删除,您可以在这段时间内通过中止wal日志回放阻止只读实例回放wal日志,之后将数据从只读实例dump出来,重新在主实例插入,进而快速完成数据修复。
约束限制
- 如果您需要使用该功能,请联系客服提交开启配置只读延迟库的申请。
- 支持RDS for PostgreSQL 12及以上版本的只读实例。
- 在配置“指定时间点回放”功能后,由于PostgreSQL数据库原理会导致主机与只读实例复制中断,期间若主实例wal日志轮转,会造成只读实例脱节(主实例数据无法同步到只读实例)。脱节后若用户需要恢复,需要先“重置回放时间”,然后联系客服进行只读实例恢复操作(恢复时间与实例数据大小及主实例资源使用情况有关)。
配置只读延迟库
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域。
- 单击页面左上角的,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在实例列表中,单击实例名称前的,单击目标只读实例的名称,进入只读实例的管理页面。
- 进入“只读延迟”页面或刷新页面,会查询并显示当前时刻的只读延迟信息。
图1 只读延迟信息
表1 只读延迟信息说明 参数
说明
当前wal回放状态
只读实例当前wal日志回放状态。通过切换开关状态可以暂停/恢复wal日志回放。
- 开关打开:正常回放。
- 开关关闭:停止回放。
真实延迟时间
页面加载以及刷新时,只读实例wal日志回放真实的延迟时间,单位ms。
该值和设置的延迟时间会略有不同,例如:主实例无业务时没有wal同步,真实延迟时间就是0ms。
设置延迟时间
用户设置的延迟时间,单位ms。单击进行编辑。
延迟时间不宜设置过长,否则在主实例业务较大时,wal日志大量在只读实例堆积,会导致磁盘空间占满,并引发只读实例脱节。
最新回放的wal日志位点
只读实例最新回放的wal日志。
最新接受的wal日志
只读实例最新接收到的wal日志。
指定时间点回放
- 在只读实例“概览”页面,暂停wal日志回放。
图2 暂停回放
- 打开回放开关,选择“回放至指定时间”,表示回放到指定时间点后暂停回放。
图3 回放至指定时间
选择“自动回放”,表示恢复至正常回放状态,只读会连续回放接收到的wal日志。
- 选择“可回放时间范围”内的某个时间点,单击“确定”,设置回放目标时间点。
只读将回放wal日志到离目标时间点最近且在目标时间点之前的事务提交点。
- 单击“重启实例”,开始恢复到设置的时间点。
图4 重启实例
- 查看回放状态。
图5 回放中
图6 回放完成
- 指定时间点回放结束后,需要重置回放时间并重启实例,才能恢复正常回放。
- 单击“重置回放时间”,在弹框中,单击“确定”。
重启实例后仍会存在延迟回放,延迟时间取决于参数“recovery_min_apply_delay”的取值。如果想立刻回放到指定时间,需要将该参数设置为0。
图7 重置回放时间
- 单击“重启实例”。
图8 重启实例
- 查看回放状态恢复正常。
图9 恢复正常回放
- 单击“重置回放时间”,在弹框中,单击“确定”。