br增量备份报错

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
v4.0.9
【问题描述】
用BR对数据库进行增量备份,报错
$ ./bin/br validate decode --field=end-version -s local:///mnt/nfs-tidb-backup/bsppr/full-2021-05-01 Detail BR log in /tmp/br.log.2021-05-14T14.58.07+0800
424909918179688452

$ ./bin/br backup db --pd 127.0.0.1:12379 --db bsppr --storage local:///mnt/nfs-tidb-backup/bsppr/incr-2021-05-14 --log-file ./logs/backup-bsppr-incr-2021-05-14.log --lastbackupts 424909918179688452
Detail BR log in ./logs/backup-bsppr-incr-2021-05-14.log
panic: cannot pass gc safe point check, aborting

goroutine 422 [running]:
go.uber.org/zap/zapcore.(*CheckedEntry).Write(0xc0016bc300, 0xc001f30800, 0x2, 0x2)
go.uber.org/zap@v1.16.0/zapcore/entry.go:234 +0x567
go.uber.org/zap.(*Logger).Panic(0xc001e975c0, 0x23a1182, 0x29, 0xc001f30800, 0x2, 0x2)
go.uber.org/zap@v1.16.0/logger.go:226 +0x7f
github.com/pingcap/log.Panic(0x23a1182, 0x29, 0xc001f30800, 0x2, 0x2)
github.com/pingcap/log@v0.0.0-20201112100606-8f1e84a3abc8/global.go:50 +0xff
github.com/pingcap/br/pkg/utils.StartServiceSafePointKeeper.func2(0x2889fa0, 0xc0006a0680)
github.com/pingcap/br@/pkg/utils/safe_point.go:111 +0x358
github.com/pingcap/br/pkg/utils.StartServiceSafePointKeeper.func3(0xc0001130e0, 0xc000113130, 0x2889fa0, 0xc0006a0680, 0xc000fdfa80, 0xc000fdfac0)
github.com/pingcap/br@/pkg/utils/safe_point.go:131 +0x1b5
created by github.com/pingcap/br/pkg/utils.StartServiceSafePointKeeper
github.com/pingcap/br@/pkg/utils/safe_point.go:120 +0x209
以下是日志文件:
backup-bsppr-incr-2021-05-14.log (73.6 KB)

其他:
对完整备份目录进行过mv 重命名操作。 这个有影响吗?测试过改名,他的 LAST_BACKUP_TS这个值 是一样的。应该没影响吧

1 个赞

请问增量备份的量级是多少?备份多长时间?

这个量级是什么意思?是指增量备份的数据量吗?这个我还不知道,因为增量备份没有成功过。
全量备份有1.4T,
目前制定的备份计划是每月初一次全量备份,后面每天基于月初的全量做增量备份。

[2021/05/14 14:59:33.217 +08:00] [PANIC] [safe_point.go:111] ["cannot pass gc safe point check, aborting"] [error="GC safepoint 424928563263438850 exceed TS 424909918179688452: [BR:Backup:ErrBackupGCSafepointExceeded]backup GC safepoint exceeded"] [errorVerbose="[BR:Backup:ErrBackupGCSafepointExceeded]backup GC safepoint exceeded\
GC safepoint 424928563263438850 exceed TS 424909918179688452\
github.com/pingcap/br/pkg/utils.CheckGCSafePoint\
\tgithub.com/pingcap/br@/pkg/utils/safe_point.go:72\
github.com/pingcap/br/pkg/utils.StartServiceSafePointKeeper.func2\
\tgithub.com/pingcap/br@/pkg/utils/safe_point.go:110\
github.com/pingcap/br/pkg/utils.StartServiceSafePointKeeper.func3\
\tgithub.com/pingcap/br@/pkg/utils/safe_point.go:131\
runtime.goexit\
\truntime/asm_amd64.s:1357"] [safePoint="{ID=br-29434193-263b-4b6e-97bd-21eceeafbfb4,TTL=5m0s,BackupTime=\"2021-05-13 18:45:03.017 +0800 CST\",BackupTS=424909918179688452}"] [stack="github.com/pingcap/br/pkg/utils.StartServiceSafePointKeeper.func2\
\tgithub.com/pingcap/br@/pkg/utils/safe_point.go:111\
github.com/pingcap/br/pkg/utils.StartServiceSafePointKeeper.func3\
\tgithub.com/pingcap/br@/pkg/utils/safe_point.go:131"]

可以看下全量备份的 ts 点是不是已经超过了 GC 设置的时间点

1 个赞

1 个赞

我没验证这个,有可能 是这个问题,请求这个GC设置的时间点,这个参数是怎么查看?

https://docs.pingcap.com/zh/tidb/v4.0/garbage-collection-configuration#gc-配置

我看了下我这个配置是默认的10分钟,
tikv_gc_life_time | 10m
意思就是我的增量备份时间不能超过10分钟吗?
如果我想每天增量备份,就需要把这个值 改为24小时是吗?

是这样的

好的,谢谢,再请教下:tidb集群,有没有必要做每天的增量备份呀?或者说比较推荐的备份方案(全量/增量备份方案是什么?)我在群里问,有些人说tidb本身就是多副本的,没必要做备份

TiDB 本身默认有三副本的数据高可用保证,能应对一部分的异常情况
另外因为 TiDB 是分布式数据库,本身存储的数据量就会比较大,所以备份会是一个比较耗时且困难的点,大数据量的情况下,逻辑备份基本已经不考虑了,物理备份目前就 BR 工具。

是否备份主要取决于用户对于备份的要求,如果公司有一些监管要求,必须进行备份,那就通过 BR 进行备份。有些用户没有这方面的要求,并且认为三副本已经能保证高可用了的话,会针对性的对于某几个重要的表进行单独备份,并不进行全局备份。

1 个赞

明白了,感谢 :kiss::kiss::kiss::kiss:

大佬,我再追问下问题:我们的业务场景是:数据插入较多,数据量大,查询不多,修改也很少(主要是做为数据存储和查询使用)。这种场景下,我把 tikv_gc_life_time配置修改成1个月,会有什么影响吗?

历史数据过多,查询的时候可能会扫描过多的 key 导致查询性能变差。

好的。

多副本不能应对误删除等场景

1 个赞

是的。

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