br能做完全恢复吗?

br能做完全恢复吗?

完全恢复指的是什么,全量备份恢复吗

不可以

“完全恢复”是 Oracle 中的概念,它的场景是丢失全部数据文件,但未丢失当前控制文件和 online log 文件,有完整备份和归档,这时候可以通过 Rman 让数据库恢复到数据库崩溃时的状态,恢复完成不会有数据丢失,因此叫做完全恢复

TiDB 的 br 日志备份,是捕获的 TiKV 数据变化,这个是异步的,原理参考:https://docs.pingcap.com/zh/tidb/v6.5/br-log-architecture#日志备份 ,所以不能做完全恢复。

PS:TiDB 是分布式数据库,数据都是多副本的(默认 3 副本),我理解不会有完全恢复这个需求。

2 个赞

第一次听这个,按说BR不是物理备份么?不应该是完全恢复么?

全量+pitr?

按道理说,TIDB支持事务,也有日志,应该能支持啊,而且3副本是不能完全保证数据安全的,机器多了,故障率也高了。另外一个问题是,如果3个同时坏了2个,数据不能查询了,报 region is unavailable ,如果重新添加KV节点,数据能恢复正常吗?

3机器3副本在坏一个机器的时候就应该处理了,这时候你加机器是可以恢复的,非要说同时坏2个,那你就搞5副本5机器吧

不能了,这种情况只有靠备份来恢复

如果是全部数据文件都丢了,但是br有全量备份+日志备份,还是能恢复出来的,但是gap可能有2-3分钟。不会是一点不丢的。

这个你只要打开br 的日志备份,查询它的状态就能看到gap是多少。

https://docs.pingcap.com/zh/tidb/stable/br-pitr-manual#查询日志备份任务

也就是说,备份+日志,这个方法 接近于 完全恢复了? 3个同时坏2个,能通过加新机器来恢复吗?上面 有说能,有说不能的

每个人理解的全量恢复不一样吧,一种是备份就是全备的,恢复当然就是全量备份回复,还有一种就是全量备份加上日志保证所有数据都和源端一致,类似于Oracle的完全恢复吧

首次了解oracle中的完全恢复的概念,受教了

是不同的情况,如果是3个tikv坏2个,最好是做unsafe recover。备份+日志对付这个情况有点用力过猛。

这个操作丢失的数据就是leader没有同步到坏掉tikv的raft日志部分的数据,通常来说,也就是几秒的数据。

备份+日志,这个可以在tikv全部坏掉的情况下,恢复集群。
好比你的集群在a云,但你的全备+日志备份在b云的s3上。这个时候a云团灭了。你就可以通过b云上的全备+日志备份,把集群恢复出来。丢失的数据就是gap的时间那一小段。通常是3-5分钟

tidb的br备份加日志备份不能等同rman ,会丢一两分钟数据

1 个赞

br全量备份可以

完全恢复和不完全恢复是oracle中的 概念,如果你理解的完全恢复是 恢复的数据是备份的时间点。那么BR备份是和Rman类似的,恢复的数据都是备份的这个时间点的