TiDB 备份后恢复错误

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.0
情况是这样的,我把 s3 以文件系统的形式挂载到了每个集群的机器上。这里以 /mnt/tidb/ 目录为例。

在中控机上使用 tiup bench tpcc -H {tidb} -P 4000 -D tpcc -U root --password ‘{password}’ --warehouses 100 --threads 64 prepare 命令来准备数据。

之后我在中控机上执行

tiup br backup full -s local:///mnt/tidb/2023-04-12-15-45 --pd {pd-server}:2379 --log-file backup.log 命令进行备份。备份完成后,再使用 tiup bench tpcc cleanup 清除掉了数据。

后来用 tiup br restore full -s local:///mnt/tidb/2023-04-12-15-45 --pd {pd-server}:2379 --log-file backup.log 恢复会出现 download sst failed 以及 No such file or directory 的报错。

请问这样子备份是行得通的吗?还有什么问题需要解决呢?

不太明白s3的原理,你可以确认下,在resore的时候,所有tikv节点都能获取到完整的备份文件列表吗

可能有以下几个方面需要注意:

  1. 备份和恢复的路径在您的备份和恢复命令中,使用的是本地文件系统路径 /mnt/tidb/2023-04-12-15-45,而不是 S3 路径。这可能会导致备份和恢复失败,因为备份和恢复命令默认使用的是 S3 存储。如果您想使用本地文件系统进行备份和恢复,需要在命令中指定 -s local 参数,例如:
tiup br backup full -s local:///mnt/tidb/2023-04-12-15-45 --pd {pd-server}:2379 --log-file backup.log
tiup br restore full -s local:///mnt/tidb/2023-04-12-15-45 --pd {pd-server}:2379 --log-file backup.log
  1. 备份和恢复的权限您在备份和恢复时使用的是本地文件系统路径,因此需要确保 TiDB 和 TiKV 进程有足够的权限来读写这些文件。您可以尝试使用 chmod 命令来修改文件的权限,例如:
chmod -R 777 /mnt/tidb/2023-04-12-15-45
  1. 备份和恢复的数据一致性在您的备份和恢复过程中,您使用了 tiup bench tpcc 命令来准备数据,并使用 tiup bench tpcc cleanup 命令来清除数据。这可能会导致备份和恢复的数据不一致,从而导致恢复失败。为了避免这种情况,建议您在备份之前停止 TiDB 集群,并在恢复之前清空 TiDB 集群中的数据。

现在使用 S3 备份时又会出现这个错误
{ kind: Other, error: “failed to put object rusoto error Request ID: None Body: \n\t-148668\n\tvalidate initidx and partlist [tideswing-tidb-backup:3af260f3-c3d9-43c5-a0c0-88c5afd04e97] failed, err: inconsistency filesize\n\t54e9c553-da2e-4412-9534-224f4e975565\n” }): [BR:KV:ErrKVStorage]tikv storage occur I/O error

我去各个节点看,都可以访问到 s3 挂载的目录下的,能看到备份文件内容,但是恢复的时候又说少了 SST File

我是先用 tiup bench tpcc 命令准备数据,后执行备份,备份完成后用 clean up 清除数据,再之后直接恢复,恢复的时候会显示 SST File Not found ,会跟数据准备有关吗?还是说需要新准备集群恢复呢?

每个节点都要能看到全量的SST备份文件才可以