首批通过分布式安全可靠测评,为关键业务系统打造
备库同步报错 replica wrs is delay too much
更新时间:2026-05-09 07:56
适用版本
OceanBase 数据库 V2.x、V3.x。
问题现象
OceanBase 数据库主库执行大量的建表操作后,备库出现延迟,且报错如下。
ERROR [RS] add_replica (ob_standby_wrs_collector.cpp:150) [32397][738][YB42C5A31005-0005CF569AETFgEA] [lt=11] [dc=0] [WRS_COLLECTOR] replica wrs is delay too much,please check it (tableid=1111606255817546,partitionid=0,slave_read_timestamp=1636960076401619,delay=5007562896) BACKTRACE:0x976527 0x6a48f13 0x27c670t 0x27er2b 0x48ee737 0×487fdf 0x482fe3 0x9743463 0x9751e2f 0x9750a8 0x20dd613 0x2cdd683 0x96060C7 0x960352 0x95f23 0x95f23e
通过下述语句分别核查主库与备库,可看到分区数存在差异。
obclient> select tenant_id,count(*) from __all_virtual_meta_table group by tenant_id;
问题原因
这是由于主库与备库创建表的速度存在差异导致的,一般来说,主库创建一个表只需要 100 ms 左右,而备库则需要 2 s。 备库建分区的时长是主库的 20~50 倍,这主要是备库为了确保正确的机制。
解决方法
可通过下述方法中的一种解决:
- 待批量建表操作后重建备集群。
- 创建表语句中加入
sleep逻辑,每次建表后停止 2s,且实时监控备集群延迟情况,必要时延长建表的时间间隔甚至停止。