TiDB日志备份报错[BR:Stream:ErrStreamLogTaskExist]无法重新执行
问题解决:TiDB BR日志备份残留任务无法终止
问题背景
公有云Kubernetes集群部署的TiDB状态正常,使用BR日志备份功能将数据备份至S3后,未按规范步骤终止任务就直接删除了Backup CR资源。再次创建备份任务时触发报错:
It supports single stream log task currently: [BR:Stream:ErrStreamLogTaskExist]stream task already exists
尝试过以下操作但均无效:
- 直接编辑Backup配置添加
logStop: true - 删除Backup资源后重新应用含
logStop: true的配置,kubectl describe backup显示logStop状态为true,但kubectl get backup状态为空 - 尝试过TiDB社区论坛的所有公开解决方案,残留备份任务仍无法停止
可行解决方案
1. 直接在TiDB节点内手动终止日志备份任务
K8s的Backup CR只是任务触发入口,真正的日志备份任务运行在TiDB集群内部,删除CR不会自动终止集群内的任务,需要用BR命令直接清理:
- 找到TiDB集群所在命名空间下的tidb-server Pod:
kubectl get pods -n <你的TiDB集群命名空间> - 进入目标tidb-server Pod:
kubectl exec -it <tidb-pod-name> -n <你的TiDB集群命名空间> -- sh - 执行BR停止命令(替换PD服务地址为你的集群实际地址):
br log stop --pd <pd-service-name>.<你的TiDB集群命名空间>.svc:2379 - 验证任务是否停止:
输出中若没有br log status --pd <pd-service-name>.<你的TiDB集群命名空间>.svc:2379Running状态的任务,说明清理成功。
2. 清理K8s侧残留资源
- 删除Backup命名空间下所有Backup CR:
kubectl delete backup --all -n backup-test - 检查并删除残留的备份Job和Pod:
kubectl get jobs,pods -n backup-test kubectl delete job <残留job名称> -n backup-test kubectl delete pod <残留pod名称> -n backup-test
3. 重新创建日志备份任务
确认集群内无残留日志备份任务后,重新应用正确的Backup CR配置即可正常创建备份任务。
内容的提问来源于stack exchange,提问作者Derhoer IT
相关产品推荐
相关产品推荐

