写点什么

TiDB Operator 恢复持久卷上的备份文件

  • 2023-03-03
    北京
  • 本文字数:1441 字

    阅读完需:约 5 分钟

作者: lqbyz 原文来源:https://tidb.net/blog/b460922e


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

常用场景

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


注意


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

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

一、环境准备

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

---kind: RoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: tidb-backup-manager  labels:    app.kubernetes.io/component: tidb-backup-managerrules:- apiGroups: [""]  resources: ["events"]  verbs: ["*"]- apiGroups: ["pingcap.com"]  resources: ["backups", "restores"]  verbs: ["get", "watch", "list", "update"]
---kind: ServiceAccountapiVersion: v1metadata: name: tidb-backup-manager
---kind: RoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: tidb-backup-manager labels: app.kubernetes.io/component: tidb-backup-managersubjects:- kind: ServiceAccount name: tidb-backup-managerroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: tidb-backup-manager
复制代码

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

[root@k8s-master backup]# kubectl apply -f backup-rbac.yaml -ntidbrole.rbac.authorization.k8s.io/tidb-backup-manager createdserviceaccount/tidb-backup-manager createdrolebinding.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/v1alpha1kind: Restoremetadata:  name: demo2-restore-nfs  namespace: tidbspec:
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.yamlrestore.pingcap.com/demo2-restore-nfs created[root@k8s-master restore]# kubectl get restore -ntidbNAME                STATUS    COMMITTS   AGEdemo2-restore-nfs   Running              49s
复制代码



查看恢复的数据库和表



发布于: 刚刚阅读数: 5
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB Operator恢复持久卷上的备份文件_集群管理_TiDB 社区干货传送门_InfoQ写作社区