暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 严少安 2023-02-28
276

lqbyz 发表于 2023-02-28
原创集群管理安装 & 部署管理与运维故障排查/诊断备份 & 恢复

上篇文章介绍了通过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: 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 表的 SELECT 和 UPDATE 权限,用于恢复前后调整 GC 时间。
创建 restore-demo2-tidb-secret secret:

kubectl create secret generic restore-demo2-tidb-secret --from-literal=user=root --from-literal=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

查看恢复的数据库和表

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。
https://tidb.net/blog/b460922e

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论