如果在使用br备份的过程中有数据写入,会对备份结果造成影响吗?

比如某次br备份耗时1个小时(假设为9:00 - 10:00),如果我在9:30时向某张表insert了大量数据,那么是否会对最终的备份结果造成影响呢?还是说最终的备份结果与备份开始时刻(9:00)的数据是一致的?

不会有影响

如果是全量备份,那么BR备份的时候是使用的快照读,默认情况下 br 会选取备份开始的时间点所对应的快照。所以结论是 与备份开始时刻(9:00)的数据是一致。

当然也可以显式指定快照对应的物理时间点进行备份 。如果该快照的数据被垃圾回收 (GC) 了,那么 br backup命令会报错并退出,最佳实践是备份前预估并调大GC回收时间,等备份结束再调整回来。

1 个赞

没有影响,br备份是块照读,通过mvcc机制导出某个时刻的一致性数据


没有影响,从你开始全量的时间起,一直到备份完成,期间新增的数据不会备份。

不会的,MVCC机制

无影响,快照读。不过备份可能会对你sql性能有影响呀,不太建议备份和大量读写一起操作。

https://docs.pingcap.com/zh/tidb/stable/br-snapshot-guide

1 个赞

不会有影响,并且br备份会自动调整GC的

那如果是日志备份呢?同样,假设在9:00 log start,10:00 log stop,9:30时向某张表insert了大量数据。是否会对最终的备份结果造成影响呢?

他备份的时候不是有一个TSO值吗,取得当前时间,然后所有备份都是查这个时间点的值来备份,如果期间有isnert或者udpate、delete。他会自动根据mvcc去找对应时间的原来的值。
tikv_gc_life_time默认是10分钟,从4.0.9以后,官方文档标明,如果有br备份,该参数会自动变化。
这个可以理解为是历史数据保留的时间。
10分钟就是10分钟内所有更新的数据都可以查到。
无论备份时候你做了多少操作。备份的结果就是你备份刚开始的时候的TSO那个时间点的数据

1 个赞

日志备份其实就是增量备份,会持续地备份 KV 变更日志。所以根本不会stop,除非你手动停掉。在你开始日志备份后,所有kv变更都会备份到存储

不会,有MVCC机制

br备份的时间去snapshot时间-mvcc机制,所以不影响

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。