首批通过分布式安全可靠测评,为关键业务系统打造
备库延迟应用案例
更新时间:2026-07-01 10:36:40
本节通过一个典型案例来介绍备库延迟功能在日常业务中的应用。
场景说明
某企业部署了一套基于网络的物理备库(一主多备),并为其中一个备库配置了延迟时间(延迟时间为 1 小时即 3600 秒)。在对数据库进行日常运维时,DBA 在主库上误执行了 DELETE FROM important_table 语句清空了重要表上的数据,现需要从延迟的备库上恢复数据。
操作步骤
注意
在进行下面的操作时,必须先设置备库的同步终点(步骤 2)再取消备库的延迟(步骤 3),否则,取消延迟后备库会全速追赶,可能会追过误操作的位点。同时,在恢复配置时,必须先恢复备库的延迟配置(步骤 6)再解除恢复终点(步骤 7),避免日志瞬间追过。
确定误操作的时间点。
例如,本文以误操作的时间为
2026-06-01 10:01:00为例。将延迟的备库的同步终点设置为误操作前的时间点。用于防止取消延迟后,备库追赶的日志超过误操作的位点。
根据误操作的时间点
2026-06-01 10:01:00,将延迟的备库的同步终点可以设置为2026-06-01 10:00:00。备租户(备库)所在集群的
sys租户为该备租户设置同步终点obclient(root@sys)[(none)]> ALTER SYSTEM RECOVER STANDBY TENANT = standby_tenant UNTIL TIME = '2026-06-01 10:00:00';备租户(备库)设置本租户的同步终点
obclient> ALTER SYSTEM RECOVER STANDBY UNTIL TIME = '2026-06-01 10:00:00';
取消备库的延迟配置,让备库立即开始追赶日志到指定的同步终点。
本文以当前网络备库的日志恢复源信息为
SERVICE=11.xx.xx.22:17855;11.xx.xx.23:17857;11.xx.xx.24:17859 USER=rep_user@mysql PASSWORD=******为例。日志恢复源信息可通过查询视图CDB_OB_LOG_RESTORE_SOURCE(系统租户)/DBA_OB_LOG_RESTORE_SOURCE(用户租户)来获取。备租户(备库)所在集群的
sys租户将该备租户的延迟时间设置为 0 秒obclient(root@sys)[(none)]> ALTER SYSTEM SET LOG_RESTORE_SOURCE = 'SERVICE=11.xx.xx.22:17855;11.xx.xx.23:17857;11.xx.xx.24:17859 USER=rep_user@mysql PASSWORD=****** DELAY=0' TENANT = standby_tenant;备租户(备库)取消本租户的的延迟时间设置为 0 秒
obclient> ALTER SYSTEM SET LOG_RESTORE_SOURCE = 'SERVICE=11.xx.xx.22:17855;11.xx.xx.23:17857;11.xx.xx.24:17859 USER=rep_user@mysql PASSWORD=****** DELAY=0';
等待备库同步并回放到目标时间点。
等待期间,可通过以下语句查看同步状态,直到
SCN_TO_TIMESTAMP(readable_scn)的值显示为指定的同步终点2026-06-01 10:00:00。备租户(备库)所在集群的
sys租户查看该备租户的同步状态obclient(root@sys)[(none)]> SELECT tenant_name, readable_scn, SCN_TO_TIMESTAMP(readable_scn) FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name = 'standby_tenant';备租户(备库)查看本租户的同步状态
obclient> SELECT tenant_name, readable_scn, SCN_TO_TIMESTAMP(readable_scn) FROM oceanbase.DBA_OB_TENANTS;obclient> SELECT tenant_name, readable_scn, SCN_TO_TIMESTAMP(readable_scn) FROM SYS.DBA_OB_TENANTS;
从备库中导出数据,然后导入主库进行修复。
恢复备库的延迟配置。
将备库的延迟时间重新设置为 1 小时即 3600 秒。
备租户(备库)所在集群的
sys租户设置该备租户的延迟时间为 3600 秒obclient(root@sys)[(none)]> ALTER SYSTEM SET LOG_RESTORE_SOURCE = 'SERVICE=11.xx.xx.22:17855;11.xx.xx.23:17857;11.xx.xx.24:17859 USER=rep_user@mysql PASSWORD=****** DELAY=3600' TENANT = standby_tenant;备租户(备库)设置本租户的延迟时间为 3600 秒
obclient> ALTER SYSTEM SET LOG_RESTORE_SOURCE = 'SERVICE=11.xx.xx.22:17855;11.xx.xx.23:17857;11.xx.xx.24:17859 USER=rep_user@mysql PASSWORD=****** DELAY=3600';
恢复备库的持续同步。
将备库的恢复终点重新设置为持续同步。
备租户(备库)所在集群的
sys租户将该备租户的恢复终点设置为持续同步obclient(root@sys)[(none)]> ALTER SYSTEM RECOVER STANDBY TENANT = standby_tenant UNTIL UNLIMITED;备租户(备库)将本租户的恢复终点设置为持续同步
obclient> ALTER SYSTEM RECOVER STANDBY UNTIL UNLIMITED;