两种 TiDB 备份方案任你选择:NFS or S3(内含操作实践 / 备份 / 恢复)
作者: HZL_0-0 原文来源:https://tidb.net/blog/90ef741a
备份
概述
备份方式
TiDB 支持两种类型的备份,全量备份包含集群某个时间点的全量数据,日志备份包含业务写入在 TiDB 产生的数据变更记录。推荐这两种备份方式一起使用:
开启日志备份:运行
tiup br log start
命令来启动日志备份任务,任务会在每个 TiKV 节点上持续运行,以小批量的形式定期将 TiDB 变更数据备份到指定存储中。定期执行快照(全量)备份:运行
tiup br backup full
命令来备份集群快照到备份存储,例如在每天零点进行集群快照备份。
备份存储
TiDB 集群部署在自建机房中,则推荐以下方式:
搭建 MinIO 作为备份存储系统,使用 S3 协议将数据备份到 MinIO 中。
挂载 NFS(如 NAS)盘到 br 工具和所有的 TiKV 实例,使用 POSIX file system 接口将备份数据写入对应的 NFS 目录中。
注意:
如果没有挂载 NFS 到 br 工具或 TiKV 节点,或者使用了支持 S3、GCS 或 Azure Blob Storage 协议的远端存储,那么 br 工具备份的数据会在各个 TiKV 节点生成。注意这不是推荐的 br 工具使用方式,因为备份数据会分散在各个节点的本地文件系统中,聚集这些备份数据可能会造成数据冗余和运维上的麻烦,而且在不聚集这些数据便直接恢复的时候会遇到 SST file not found
报错。
NFS 方式(不推荐)
NFS 快照备份实践
备份存储配置
集群环境中 TiKV 部署在 87、88、89,为了使得备份不分散 3 台服务器上,这里使用 NFS 将 3 台 TiKV 的备份数据聚集到 87 这一台服务器的一个目录中。
暂时无法在飞书文档外展示此内容
在 87、88、89 上安装 nfs 并启动

在 87 上执行以下命令:

将 88 和 89 的备份目录挂载到 87 的共享目录上,在 88、89 上分别执行以下命令:

备份工具 br 安装
在 87 上使用 tidb 用户执行:
执行全量备份
在 87 上使用 tidb 用户执行:


NFS 快照备份恢复实践
模拟删除 test 库
恢复全量备份数据
在 87 上使用 tidb 用户执行:


NFS 定时快照备份
准备备份脚本
在 87 上创建定时备份脚本:
添加定时任务
添加定时任务
使用 crontab -e 命令添加定时任务
0 2 * * *
表示每天凌晨 2 点进行备份, sh /opt/scripts/fulldbbak.sh
表示执行备份脚本。
Minio 方式(推荐)
Minio 快照备份实践
离线部署 Minio
这里远程备份文件对象存储选择 minio,先使用 docker 在 172.23.57.233 上部署 minio。
下载 minio 镜像
加载镜像
编写 docker-compose 文件
运行 minio
测试 minio
访问 http://172.23.57.233:9090/login 页面,使用设定的账户密码登录来测试是否部署成功

创建一个 bucket。

创建一个 Region,名称为 us-east-1

重启 minio 容器。
备份工具 br 安装
在 87 上使用 tidb 用户执行:
执行全量备份
在 87 上使用 tidb 用户执行:


Minio 快照备份恢复实践
模拟删除 test 库
恢复全量备份数据
在 87 上使用 tidb 用户执行:


Minio 定时快照备份
准备备份脚本
在 172.23.57.87 上创建定时备份脚本,执行日志存在 /tidb/minio_backup_log 目录下:
添加定时任务
添加定时任务
使用 crontab -e 命令添加定时任务
Python 脚本定时清理 minio 备份文件
在服务器 172.23.57.87 的 /opt/scripts 目录下创建执行脚本。
Python 脚本准备
要求只保留 minio 中 TiDB 5 天的备份数据。
编写脚本,修改对应的 Minio 配置和目标配置
脚本首行添加 Python 路径(通过
which python3
查看)增加可执行权限:chmod +x /opt/scripts/clean_minio_backup.py
使用 Linux 中 Crontab (定时任务)进行清理
添加下面命令后保存退出:
# 每天凌晨 3 点执行清理命令 0 3 * * * /opt/scripts/clean_minio_backup.py >> /opt/scripts/clean.log 2>&1
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/560b3947c74d5e29b128b973e】。文章转载请联系作者。
评论