TiDB Operator 持久卷备份文件恢复技巧

网友投稿 545 2024-03-20



上篇文章介绍了通过BR对tidb数据库备份到NFS共享存储上,本文将结束将NFS共享存储上的备份数据恢复到K8S集群环境上。本文介绍的恢复方法基于 TiDB Operator 的 CustomResourceDefinition (CRD) 实现,底层使用 BR 工具来恢复数据。BR 全称为 Backup & Restore,是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。

TiDB Operator 持久卷备份文件恢复技巧

常用场景

当使用 BR 将 TiDB 集群数据备份到持久卷后,如果需要从持久卷将备份的 SST (键值对) 文件恢复到 TiDB 集群,请参考本文使用 BR 进行恢复。

注意

BR 只支持 TiDB v3.1 及以上版本。

BR 恢复的数据无法被同步到下游,因为 BR 直接导入 SST 文件,而下游集群目前没有办法获得上游的 SST 文件。

一、环境准备

下载 backup-rbac.yaml 文件到恢复的服务器上

--- kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: tidb-backup-manager labels: app.kubernetes.io/component: tidb-backup-manager rules: - apiGroups: [""] resources: ["events"] verbs: ["*"] - apiGroups: ["pingcap.com"] resources: ["backups", "restores"] verbs: ["get", "watch", "list", "update"] ---kind: ServiceAccount apiVersion: v1 metadata: name: tidb-backup-manager --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: tidb-backup-manager labels: app.kubernetes.io/component: tidb-backup-manager subjects: -kind: ServiceAccount name: tidb-backup-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: tidb-backup-manager

执行命令创建恢复所需的RBAC相关资源

[root@k8s-master backup]# kubectl apply -f backup-rbac.yaml -ntidb role.rbac.authorization.k8s.io/tidb-backup-manager created serviceaccount/tidb-backup-manager created rolebinding.rbac.authorization.k8s.io/tidb-backup-manager created

备注:如果备份的时候创建了此步骤可以省略

再次确认是否从K8S集群中可以访问备份数据的NFS服务器

如果TiDB版本高于v4.0.8可以忽略此步骤,如果低于需要执行如下操作

确保你拥有恢复数据库 mysql.tidb 表的 SELECTUPDATE权限,用于恢复前后调整 GC 时间。创建 restore-demo2-tidb-secret secret:kubectl create secret generic restore-demo2-tidb-secret --from-literal=user=root --from-literal=password=<password> --namespace=tidb

二、从持久卷NFS恢复数据

创建恢复的配置文件,将指定的备份数据恢复到TiDB集群

[root@k8s-master restore]# cat restore.yaml --- apiVersion: pingcap.com/v1alpha1 kind:Restore metadata: name: demo2-restore-nfs namespace: tidb spec: br: cluster: yz clusterNamespace: tidb local: prefix: backup-nfs volume: name: nfs nfs: server:172.16.5.194 path: /home/k8s-nfs volumeMount: name: nfs mountPath: /nfs

应该该配置文件,并验证恢复数据

[root@k8s-master restore]# kubectl apply -f restore.yaml restore.pingcap.com/demo2-restore-nfs created [root@k8s-master restore]# kubectl get restore -ntidb NAME STATUS COMMITTS AGE demo2-restore-nfs Running 49s

查看恢复的数据库和表

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:TiDB Operator 扩缩容与集群管理操作指南
下一篇:TiDB Operator 数据导入实战教程
相关文章