RPO测试是如何测试的

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

大家有没有了解过数据库(MySQL、TiDB)RPO是如何准确测试的?

如常说的RPO=0具体定义的极限测试

这个看灾备配置情况吧,两地三中心 三地五中心。RTO RPO为0 很easy

RPO,故障发生时,丢失的记录数。目前国内的数据库基本都宣称 RPO 为 0 了,就是故障发生时,也不会丢数据。我粗浅理解,这个应该是通过 raft 算法来保证数据一致性的。即,当原 leader 故障时, 写入暂时阻塞,直到新的 leader 产生后,阻塞的写入往新的 leader 写,这种情况下,客户端没有报错,只是会卡住一小会(切换 leader 的时间)。或者,在选 leader 过程,客户端写入失败(失败不代表数据丢失),客户端可以一直重试,直到新 leader 产生后,客户端重试成功。
基于这个理解,我认为可以设计这种一个测试。

1、测试程序并发往数据库写入记录,一旦写入成功,测试程序也往本地文件写入记录(注意并发包含)
2、在并发跑测试程序过程,有计划地对集群进行断网测试(直接拔网线,稍后还可以来个断电测试)
3、检测在各种暴力测试场景下,本地文件的记录情况,与数据库记录情况是否一样?如果不一样,相差多少条?RPO为0时,基本两者是一样的。

以上是本人粗浅的理解。有不恰当的地方,请指正。

rpo 就是各种异常场景数据是否丢失啊,比如一分钟, 5分钟等

测试……

:+1:

RPO,故障发生时,故障的恢复点

RPO的单位是秒(s),所以就不能是答案里说的丢失的记录数