TIDB数据库无法正常备份,如何处理?

【 TiDB 使用环境】测试环境
【 TiDB 版本】
【复现路径】
【遇到的问题:问题现象及影响】
备份TIDB数据库失败, 当前集群有两个库,ceShiSave库一直在持续写入数据,而现在备份的test库,只有一个表,三行数据。 系统CPU内存也没有占满。 一直提示GC相关的问题 ,系统设置GC是10m。
信息如下:
root@yiduo-VirtualBox:/opt# tiup br backup db -s “local:///opt/back1013” --pd “192.168.1.243:2379” --db test --log-file backuptable1013.log
Checking updates for component br… Timedout (after 2s)
Starting component br: /root/.tiup/components/br/v8.1.0/br backup db -s local:///opt/back1013 --pd 192.168.1.243:2379 --db test --log-file backuptable1013.log
Detail BR log in backuptable1013.log
[2024/06/12 14:10:07.977 +08:00] [INFO] [collector.go:77] [“Database Backup failed summary”] [total-ranges=0] [ranges-succeed=0] [ranges-failed=0]
Error: GC safepoint 450408446345609216 exceed TS 450405012801323009: [BR:Backup:ErrBackupGCSafepointExceeded]backup GC safepoint exceeded

备份到 本地,本地文件夹的用户权限指定成tidb用户。
image

【附件:截图/日志/监控】
集群分布


两台服务器整体性能:
image
image

生产环境计划情况
生产环境,只会部署 3个PD、两个KV。 或 一个PD、一个KV。 只要性能满足就可以。 如项目中有3台以上数据库服务器时,再考虑部署3个PD,3个以上的KV情况。 这种情况是否可以保证系统正常使用? 可以考虑人工定期备份,避免数据丢失的情况。

个人感觉是机器内存不够,导出数据时内存溢出了。看看操作系统的message日志有没有报OOM错误。

两台机器在生产跑一个集群,再跑BR备份,听着就很吃力啊

gc时间设置长点,可能是备份过程中mvcc版本已经过期,被gc了

我备份的库就只有一个表,3行数据。 GC时间是10分,我修改成20分,错误还是这样。

体量这么小的一个库,还跟GC有关? 另一个库也会影响这个比较小的库?

看这句话,GC 450408446345609216 ‘2024-06-12 13:57:48.689000’
GC 450405012801323009 ‘2024-06-12 10:19:30.757000’
你这至少是3个多小时的GC time

你设置成4个小时试试

看报错,信息是真的提示数据被gc掉,请确保备份没有暂停过,又或者备份的日志文件不能重复。可以尝试把备份失败,所生成的文件全部删除后重新执行备份试试。

SET GLOBAL tidb_gc_life_time = ‘300m’;
将GC设置成5小时,重启集群,可以正常备份了。

让我奇怪的是,我再将GC修改成10分钟,然后再备份,也可以正常备份。

看看GC 任务正常执行了吗?是不是有异常

TiDB备份失败的原因是因为备份的GC(Garbage Collection)安全点超出了当前的时间点。TiDB在进行备份时会使用一个GC时间点来确保备份的数据不会被GC过程清理掉。当备份操作尝试使用的GC时间点落后于实际的GC执行时间点时,就会出现这个错误。

GC 任务正常执行了吗