正文
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文件 简单方便.