tidb备份是弱项,各种问题频出,新生事物。已解

BR:5.0.1
tidb:5.0.1
Error: backup lock exists, may be some backup files in the path already: [BR:Common:ErrInvalidArgument]invalid argument
测试锁文件在backup目录下backup.lock,线上环境没有这个文件
就是在报这个错,新装一下还是一样,这个lock文件在哪里,什么情况下报这个错
cmd:/deploy/tidb/tidb-toolkit-v5.0.1-linux-amd64/bin/br backup full --pd “10.8.52.53:2379” --filter ‘TPCH*.*’ --storage “local:///data01/tidb/backup/” --log-file “/data01/tidb/log/backupdb.log”
脚本白写了半天

10.8.52.62 delete /data01/tidb/backup/*
10.8.52.63 delete /data01/tidb/backup/*
10.8.52.64 delete /data01/tidb/backup/*
10.8.52.65 delete /data01/tidb/backup/*
10.8.52.66 delete /data01/tidb/backup/*
Detail BR log in /data01/tidb/log/backupdb.log
Error: backup lock exists, may be some backup files in the path already: [BR:Common:ErrInvalidArgument]invalid argument
scp 10.8.52.62
scp: /data01/tidb/backup/: No such file or directory
scp 10.8.52.63
scp: /data01/tidb/backup/
: No such file or directory
scp 10.8.52.64
scp: /data01/tidb/backup/: No such file or directory
scp 10.8.52.65
scp: /data01/tidb/backup/
: No such file or directory
scp 10.8.52.66
scp: /data01/tidb/backup/: No such file or directory
game over
没有问件报的错证明文件夹是空的,锁文件在哪呢
#backup tidb data
vDate=date +%Y%m%d
#集群名称
tidbName=TPCH_001
#删除远端之前的备份
echo "110.8.52.62 delete /data01/tidb/backup/
"
ssh root@10.8.52.62 “rm -rf /data01/tidb/backup/" “exit”
echo "110.8.52.63 delete /data01/tidb/backup/

ssh root@10.8.52.63 “rm -rf /data01/tidb/backup/" “exit”
echo "110.8.52.64 delete /data01/tidb/backup/

ssh root@10.8.52.64 “rm -rf /data01/tidb/backup/" “exit”
echo "110.8.52.65 delete /data01/tidb/backup/

ssh root@10.8.52.65 “rm -rf /data01/tidb/backup/" “exit”
echo "110.8.52.66 delete /data01/tidb/backup/

ssh root@10.8.52.66 “rm -rf /data01/tidb/backup/*” “exit”

#backp
/deploy/tidb/tidb-toolkit-v5.0.2-linux-amd64/bin/br backup full --pd “10.8.52.54:2379” --filter "TPCH*." --storage “local:///dtata01/tidb/backup” --log-file “/data01/tidb/log/backupdb.log”
#copy data
fileName=$tidbName+‘-’+$vDate
rm -rf /tidb//data/allbackup/$fileName
mkdir -p /tidb/data/allbackup/$fileName/
echo “scp 10.8.52.62”
scp root@10.8.52.62:/data01/tidb/backup/
/data01/tidb/allbackup/$fileName/
echo “scp 10.8.52.63”
scp root@10.8.52.63:/data01/tidb/backup/* /data01/tidb/allbackup/$fileName/
echo “scp 10.8.52.64”
scp root@10.8.52.64:/data01/tidb/backup/* /data01/tidb/allbackup/$fileName/
echo “scp 10.8.52.65”
scp root@10.8.52.65:/data01/tidb/backup/* /data01/tidb/allbackup/$fileName/
echo “scp 10.8.52.66”
scp root@10.8.52.66:/data01/tidb/backup/* /data01/tidb/allbackup/$fileName/

image
image
image
image
image

在pd节点找到了backup.lock删了

新的错误:Error: [BR:KV:ErrKVStorage]tikv storage occur I/O error

[2021/07/01 20:32:14.706 +08:00] [ERROR] [backup.go:41] [“failed to backup”] [error=“[BR:KV:ErrKVStorage]tikv storage occur I/O error”] [errorVerbose=“[BR:KV:ErrKVStorage]tikv storage occur I/O error
github.com/pingcap/errors.AddStack
\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/errors.go:174
github.com/pingcap/errors.Trace
\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/juju_adaptor.go:15
github.com/pingcap/br/pkg/backup.(*Client).BackupRange
\tgithub.com/pingcap/br/pkg/backup/client.go:473
github.com/pingcap/br/pkg/backup.(*Client).BackupRanges.func1
\tgithub.com/pingcap/br/pkg/backup/client.go:424
github.com/pingcap/br/pkg/utils.(*WorkerPool).ApplyOnErrorGroup.func1
\tgithub.com/pingcap/br/pkg/utils/worker.go:63
golang.org/x/sync/errgroup.(*Group).Go.func1
\tgolang.org/x/sync@v0.0.0-20210220032951-036812b2e83c/errgroup/errgroup.go:57
runtime.goexit
\truntime/asm_amd64.s:1371”] [stack=“main.runBackupCommand
\tcommand-line-arguments/backup.go:41
main.newFullBackupCommand.func1
\tcommand-line-arguments/backup.go:109
github.com/spf13/cobra.(*Command).execute
\tgithub.com/spf13/cobra@v1.0.0/command.go:842
github.com/spf13/cobra.(*Command).ExecuteC
\tgithub.com/spf13/cobra@v1.0.0/command.go:950
github.com/spf13/cobra.(*Command).Execute
\tgithub.com/spf13/cobra@v1.0.0/command.go:887
main.main
\tcommand-line-arguments/main.go:56
runtime.main
\truntime/proc.go:225”]
[2021/07/01 20:32:14.706 +08:00] [ERROR] [main.go:58] [“br failed”] [error=“[BR:KV:ErrKVStorage]tikv storage occur I/O error”] [errorVerbose=“[BR:KV:ErrKVStorage]tikv storage occur I/O error
github.com/pingcap/errors.AddStack
\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/errors.go:174
github.com/pingcap/errors.Trace
\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/juju_adaptor.go:15
github.com/pingcap/br/pkg/backup.(*Client).BackupRange
\tgithub.com/pingcap/br/pkg/backup/client.go:473
github.com/pingcap/br/pkg/backup.(*Client).BackupRanges.func1
\tgithub.com/pingcap/br/pkg/backup/client.go:424
github.com/pingcap/br/pkg/utils.(*WorkerPool).ApplyOnErrorGroup.func1
\tgithub.com/pingcap/br/pkg/utils/worker.go:63
golang.org/x/sync/errgroup.(*Group).Go.func1
\tgolang.org/x/sync@v0.0.0-20210220032951-036812b2e83c/errgroup/errgroup.go:57
runtime.goexit
\truntime/asm_amd64.s:1371”] [stack=“main.main
\tcommand-line-arguments/main.go:58
runtime.main
\truntime/proc.go:225”]

当发生lock exists时,查询不到back.lock文件,但是它不知道什么时候又有了,很难捕捉
脚本也都是在测试环境搞好的,到了线上环境就问题频出
所有的backup文件都删掉了,依然是backup lock exists,这个错报的坑爹


image

1 个赞
  1. 都有什么问题麻烦整理下发出来。
  2. BR 是什么版本? 集群是什么版本?
  3. 参考下其他帖子
    br备份报错1 - #6,来自 zy-xiaoyuyu
  4. 测试可以看到,如果报错是有残留文件,可以删除。重新备份。如果写脚本,手工登录每个节点验证下是否删除成功了。

第一次执行会在当前机器指定目录创建锁文件,第二次执行会检查有没有锁文件,有就会报这个错

验证的都删除了,所以才没招了

tiup cluster display <cluster_name> 展示下结果。
麻烦反馈下 log 日志,多谢。

不要说测试,我测试都是通过的,我要找这个back.lock文件究竟是藏哪里了
看看我的测试

lock file 目的是不让同目录下存在多个正在进行的备份,br 也不会主动删除这个 lock,lock file 只会存在你的备份路径下。

1 个赞

没有这个文件

锁文件在你指定的那个备份目录下面

lock 文件在运行 br 的机器上,目录就是 --storage 指定的目录

这里有两个问题:

  1. 报错信息提示不够清晰
  2. 用户指定的是 kv 机器上的备份目录,但是却被 br 拿来在本地存 meta 和 lock,有点不合理

不过话说回来,虽然有这些问题,但是文档里也提到了备份目录的位置问题,仔细看这个文档,应该也能知道去哪里找 lock 和 meta 文件,你这标题和态度 有点傲慢了楼主

5 个赞

赞,这题目确实很有情绪输出,一万个同意,技术性的讨论不要这样吧,
换句话说,linux 上一个 file 你找不到,这不科学啊,况且还是一个确实存在的文件,这,,,,这,,,,你让我们咋想。。。。。find?不香吗

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