TIKV RawKV的备份和恢复,恢复时出现问题

,

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】
问题一: 文档中没有提及如何备份全量rawkv数据,是不加--start--end这两个参数吗
问题二:如题,目前测试结果为本地和s3的两种介质备份都成功,但是恢复过程都有不同的问题,远程s3不报错但显示恢复数据为0;本地恢复会报错。

1、测试过程-远程s3(ceph)

[root@nma07-304-d19-sev-r740-2u21 tls]# /opt/TDP/tidb-community-server-v6.3.0-linux-amd64/br backup raw --pd “127.0.0.1:2379” --ca ca.crt --cert client.crt --key client.pem --ratelimit 128 --cf default --storage “s3://juicefsmetabk/test1205?endpoint=http://10.37.70.2:8081&access-key=J5PSR9YQL0TJ4BBXFTWD&secret-access-key=xQlY47EWvA2URPwcBt7ZB9d72iKK7jss8Bb5PS
S5” --send-credentials-to-tikv=trueDetail BR log in /tmp/br.log.2022-12-05T09.10.54+0800
Raw Backup <----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2022/12/05 09:10:54.908 +08:00] [INFO] [collector.go:69] [“Raw Backup success summary”] [total-ranges=6] [ranges-succeed=6] [ranges-failed=0] [backup-total-regions=6] [total-take=392.84766ms] [total-kv=20437] [total-kv-size=16.72MB] [average-speed=42.55MB/s] [backup-data-size(after-compressed)=761.2kB]

2、查看2000条数据并存储方便与恢复数据做比对
cd /root/.tiup/storage/cluster/clusters/csfl-cluster/tls/
tiup ctl:v6.3.0 tikv --ca-path ca.crt --cert-path client.crt --key-path client.pem --host 10.37.70.31:20160 --data-dir /software/tidb-data/tikv-20160 scan --from ‘z’ --limit 2000 --show-cf lock,default,write
3、清除集群所有数据并重启集群
tiup cluster clean prod-cluster --data

tiup cluster start prod-cluster

4、导入备份的数据

/opt/TDP/tidb-community-server-v6.3.0-linux-amd64/br restore raw --pd “127.0.0.1:2379” --ca ca.crt --cert client.crt --key client.pem --ratelimit 128 --cf default --storage “s3://juicefsmetabk/test1205?endpoint=http://10.37.70.2:8081&access-key=J5PSR9YQL0TJ4BBXFTWD&secret-access-key=xQlY47EWvA2URPwcBt7ZB9d72iKK7jss8Bb5PSS5” --send-credentials-to-tikv=true

Raw Restore <---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 100.00%
[2022/12/05 14:02:28.700 +08:00] [INFO] [collector.go:69] [“Raw Restore success summary”] [total-ranges=0] [ranges-succeed=0] [ranges-failed=0] [restore-files=6] [total-take=482.410289ms] [Result=“Nothing to restore”] [total-kv=20437] [total-kv-size=16.72MB] [average-speed=34.65MB/s]

显示恢复了0条数据
5、查看2000条数据并与先前比对

tiup ctl:v6.3.0 tikv --ca-path ca.crt --cert-path client.crt --key-path client.pem --host 10.37.70.31:20160 --data-dir /software/tidb-data/tikv-20160 scan --from ‘z’ --limit 2000 --show-cf lock,default,write >2001

发现jfs开头的数据确实没有恢复

2、测试过程-本地磁盘

1、进行本地备份 测试两种是否携带 start参数做对比,因官方未给出全量备份方式,尝试删除start end参数

jfs转码后6A6673作为start的值 不确定是不是我们真正要的范围数据 但是确实有数据
/opt/TDP/tidb-community-server-v6.3.0-linux-amd64/br backup raw --pd “127.0.0.1:2379” --ca ca.crt --cert client.crt --key client.pem --start 6A6673 --ratelimit 128 --cf default --storage “local:///home/tidb/backuprawzjfs6A6673”
[2022/12/06 10:01:08.036 +08:00] [INFO] [collector.go:69] [“Raw Backup success summary”] [total-ranges=2] [ranges-succeed=2] [ranges-failed=0] [backup-total-regions=2] [total-take=84.392519ms] [backup-data-size(after-compressed)=829.5kB] [total-kv=20853] [total-kv-size=19.03MB] [average-speed=225.5MB/s]

不带start和end参数 成功 和上面的数据量显示一样
/opt/TDP/tidb-community-server-v6.3.0-linux-amd64/br backup raw --pd “127.0.0.1:2379” --ca ca.crt --cert client.crt --key client.pem --ratelimit 128 --cf default --storage “local:///home/tidb/backupraw”
[2022/12/06 09:58:11.842 +08:00] [INFO] [collector.go:69] [“Raw Backup success summary”] [total-ranges=2] [ranges-succeed=2] [ranges-failed=0] [backup-total-regions=2] [total-take=84.355335ms] [total-kv=20853] [total-kv-size=19.03MB] [average-speed=225.6MB/s] [backup-data-size(after-compressed)=829.5kB]

2、清除集群所有数据并重启集群
tiup cluster clean prod-cluster --data

tiup cluster start prod-cluster

3、导入备份的数据

[tidb@nma07-304-d19-sev-r740-2u21 tls]$ /opt/TDP/tidb-community-server-v6.3.0-linux-amd64/br restore raw --pd “127.0.0.1:2379” --ca ca.crt --cert client.crt --key client.pem --start 6A6673 --ratelimit 128 --cf default --storage “local:///home/tidb/backuprawzjfs6A6673”

[tidb@nma07-304-d19-sev-r740-2u21 tls]$ /opt/TDP/tidb-community-server-v6.3.0-linux-amd64/br restore raw --pd “127.0.0.1:2379” --ca ca.crt --cert client.crt --key client.pem --ratelimit 128 --cf default --storage “local:///home/tidb/backupraw”

RawKV 备份和恢复,我是参考的这个文档做的 方便您核查
https://docs.pingcap.com/zh/tidb/v6.1/rawkv-backup-and-restore

使用 TiKV BR 吧,参考 TiKV | RawKV BR

TiDB BR 后续不再支持 RawKV 的备份恢复了

1 个赞

感谢 我也使用您推荐的测试了,恢复过程出现问题,测试过程如下
1、写入数据
client.put(ByteString.copyFromUtf8(“k1”), ByteString.copyFromUtf8(“Hello”));
client.put(ByteString.copyFromUtf8(“k2”), ByteString.copyFromUtf8(“,”));
client.put(ByteString.copyFromUtf8(“k3”), ByteString.copyFromUtf8(“World”));
client.put(ByteString.copyFromUtf8(“k4”), ByteString.copyFromUtf8(“!”));
client.put(ByteString.copyFromUtf8(“k5”), ByteString.copyFromUtf8(“Raw KV”));
2、备份
./tikv-br backup raw --pd=“192.168.72.32:2379” --storage=“local:///home/tidb/backupraw/” --log-file=“/tmp/backupraw1.log” --gcttl=5m --format=“raw”
3、清除数据
tiup cluster clean tidb-test --data
4、恢复
./tikv-br restore raw
–pd “192.168.72.32:2379”
–storage “local:///home/tidb/backupraw”
–log-file restoreraw.log
恢复失败,报错为:
Cannot read local:///home/tidb/backupraw/4/6_2_default.sst into /ssd13/tidb-data/tikv-20160/import/.temp/27682296-4918-4ede-bc85-e327b5a6ce2c_8_5_2_default.sst: No such file or directory (os error 2): [BR:KV:ErrKVDownloadFailed]download sst failed;

3、清除数据
tiup cluster clean tidb-test --data

我发现在这一步清除数据以后数据目录下的这个文件夹就会清空/ssd13/tidb-data/tikv-20160/import/.temp/

恢复数据的时候是不允许清空数据吗

TiKV 读不到这个文件 local:///home/tidb/backupraw/4/6_2_default.sst
集群是怎么部署的?如果是多机部署,需要用分布式文件系统存储备份文件

各位专家好!根据以往专家的回复,我这边改用了ceph的S3作为存储介质,同时使用了tikv官网的BR工具,但是还是报错 请帮忙看一下吧 谢谢
[root@nma07-304-d19-sev-r740-2u21 lzs]# export AWS_ACCESS_KEY_ID=“M0QELJB5OKQLEB0MXTDE”;
[root@nma07-304-d19-sev-r740-2u21 lzs]# export AWS_SECRET_ACCESS_KEY=“w4r9N3ZydOZHjoSsBrCCwgr7LDiaWPVaS4mmkiz7”;
[root@nma07-304-d19-sev-r740-2u21 lzs]# ./tikv-br backup raw --pd=“10.37.70.31:2379” --storage “s3://tikvtest/test0301” --s3.endpoint “http://10.37.69.240:8081” --ratelimit=128 --dst-api-version=v2 --log-file=“/tmp/br_backup.log”
Detail BR log in /tmp/br_backup.log
[2023/03/01 10:32:18.776 +08:00] [INFO] [collector.go:67] [“Raw backup failed summary”] [total-ranges=0] [ranges-succeed=0] [ranges-failed=0]Error: error occurred when checking backupmeta file: Forbidden: Forbidden status code: 403, request id: tx000007e49fa4bdc7907c0-0063feb932-447d5-default

您好 是多机部署,我们现在刚刚有了s3的环境 因此又测了一下 您帮忙再看看吧 是今天回复的帖子

Forbidden status code: 403

检查一下 ceph 路径的读写权限

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