TiDB恢复部分表的方式方法

发布时间 2023-10-08 18:15:55作者: 济南小老虎

TiDB恢复部分表的方式方法


背景

今天同事告知误删了部分表. 
因为是UAT准生产的环境, 所以仅有每天晚上11点的备份处理.
同时告知 昨天的数据也可以. 
得到认可后进行了 TiDB的单表备份恢复. 

备份的语句

注意TiDB是可以增量备份恢复的
但是为了快速的恢复和解决背景中的问题. 我这边采用保留三天备份呢的模式进行处理. 

now=`date +%Y%m%d%H`
export AWS_ACCESS_KEY_ID=miniouser
export AWS_SECRET_ACCESS_KEY=miniopassword

mkdir /nvme02/minio/tidb255xxx${now}

time /root/.tiup/components/br/v7.2.0/br backup full  -f '*.*'  -f '!information_schema.*'   -f '!emetrics_schema.*'    --pd "192.168.255.tidb:2379" --storage "s3://tidb255xxx${now}" --s3.endpoint "http://192.168.255.minio:9901"  --send-credentials-to-tikv=true  --log-file backupfull.log

注意 我这台机器是在minio 服务器上面执行的 好处是可以通过mkdir 的方式创建bucket 
这样备份的脚本最为简单
minio的数据目录就在 /nvme02/minio

计划任务是 23点进行. 

恢复脚本

now=`date +%Y%m%d%H`
export AWS_ACCESS_KEY_ID=miniouser
export AWS_SECRET_ACCESS_KEY=miniopassword
/root/.tiup/components/br/v7.2.0/br restore  table --db ERPDATA_ZZ_UAT_0001 --table SYS_VERITY_TREE  --pd "192.168.255.xxx:2379" --storage "s3://tidb255xxx2023100723" --s3.endpoint "http://192.168.255.xxx:9901"  --send-credentials-to-tikv=true  --log-file backupfull.log

注意 br 的restore的脚本
低版本可以使用 `dbname`.`tablename` 方式进行恢复
但是高版本必须使用
br restore  table --db ERPDATA_ZZ_UAT_0001 --table SYS_VERITY_TREE  --pd
进行恢复. 不然会报错. 

提取数据

可以使用navicat 后者是dblink的方式将数据转储出来就可以了. 

可以导出 sql文件 简单方便.