码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • TiDB备份与恢复简介


    本文档介绍如何对 Kubernetes 上的 TiDB 集群进行数据备份和数据恢复。备份与恢复中所使用的工具有 Dumpling、TiDB Lightning 和 BR。

    Dumpling 是一个数据导出工具,该工具可以把存储在 TiDB/MySQL 中的数据导出为 SQL 或者 CSV 格式,可以用于完成逻辑上的全量备份或者导出。

    TiDB Lightning 是一个数据导入工具,该工具可以把 Dumpling 或 CSV 输出格式的数据快速导入到 TiDB 中,可以用于完成逻辑上的全量恢复或者导入。

    BR 是 TiDB 分布式备份恢复的命令行工具,用于对 TiDB 集群进行数据备份和恢复。相比 Dumpling 和 Mydumper,BR 更适合大数据量的场景,BR 只支持 TiDB v3.1 及以上版本。如果需要对延迟不敏感的增量备份,请参阅 BR。如果需要实时的增量备份,请参阅 TiCDC。

    使用场景

    数据备份

    如果你对数据备份有以下要求,可考虑使用 BR 对 TiDB 进行数据备份:

    • 备份的数据量较大(大于 1 TB),而且要求备份速度较快
    • 直接备份数据的 SST 文件(键值对)
    • 对延迟不敏感的增量备份

    BR 相关使用文档可参考:

    • 使用 BR 备份 TiDB 集群到兼容 S3 的存储
    • 使用 BR 备份 TiDB 集群到 GCS
    • 使用 BR 备份 TiDB 集群到 Azure Blob Storage
    • 使用 BR 备份 TiDB 集群到持久卷

    如果你对数据备份有以下要求,可考虑使用 Dumpling 对 TiDB 进行数据备份:

    • 导出 SQL 或 CSV 格式的数据
    • 对单条 SQL 语句的内存进行限制
    • 导出 TiDB 的历史数据快照

    Dumpling 相关使用文档可参考:

    • 使用 Dumpling 备份 TiDB 集群数据到兼容 S3 的存储
    • 使用 Dumpling 备份 TiDB 集群数据到 GCS

    数据恢复

    如果你需要从由 BR 备份出的 SST 文件对 TiDB 进行数据恢复,则应使用 BR。相关使用文档可参考:

    • 使用 BR 恢复兼容 S3 的存储上的备份数据
    • 使用 BR 恢复 GCS 上的备份数据
    • 使用 BR 恢复 Azure Blob Storage 上的备份数据
    • 使用 BR 恢复持久卷上的备份数据

    如果你需要从由 Dumpling 导出的或其他格式兼容的 SQL 或 CSV 文件对 TiDB 进行数据恢复,则应使用 TiDB Lightning。相关使用文档可参考:

    • 使用 TiDB Lightning 恢复兼容 S3 的存储上的备份数据
    • 使用 TiDB Lightning 恢复 GCS 上的备份数据

    备份与恢复过程

    为了对 Kubernetes 上的 TiDB 集群进行数据备份,用户需要创建一个自定义的 Backup Custom Resource (CR) 对象来描述一次备份,或者创建一个自定义的 BackupSchedule CR 对象来描述一个定时备份。

    为了对 Kubernetes 上的 TiDB 集群进行数据恢复,用户可以通过创建一个自定义的 Restore CR 对象来描述一次恢复。

    在创建完对应的 CR 对象后,TiDB Operator 将根据相应配置并选择对应的工具执行备份或恢复。

    删除备份的 Backup CR

    用户可以通过下述语句来删除对应的备份 CR 或定时全量备份 CR。

     
    

    kubectl delete backup ${name} -n ${namespace} kubectl delete backupschedule ${name} -n ${namespace}

    如果你使用 v1.1.2 及以前版本,或使用 v1.1.3 及以后版本并将 spec.cleanPolicy 设置为 Delete 时,TiDB Operator 在删除 CR 时会同时清理备份文件。

    在满足上述条件时,如果需要删除 namespace,建议首先删除所有的 Backup/BackupSchedule CR,再删除 namespace。

    如果直接删除存在 Backup/BackupSchedule CR 的 namespace,TiDB Operator 会持续尝试创建 Job 清理备份的数据,但因为 namespace 处于 Terminating 状态而创建失败,从而导致 namespace 卡在该状态。

    这时需要通过下述命令删除 finalizers:

     
    

    kubectl patch -n ${namespace} backup ${name} --type merge -p '{"metadata":{"finalizers":[]}}'

    清理备份文件

    TiDB Operator v1.2.3 及之前的版本,清理备份文件的方式为:循环删除备份文件,一次删除一个文件。

    TiDB Operator v1.2.4 及以后的版本,清理备份文件的方式为:循环删除备份文件,一次批量删除多个文件。对于每次批量删除多个文件的操作,根据备份使用的后端存储类型的不同,删除方式不同。

    • S3 兼容的后端存储采用并发批量删除方式。TiDB Operator 启动多个 Go 协程,每个 Go 协程每次调用批量删除接口 "DeleteObjects" 来删除多个文件。
    • 其他类型的后端存储采用并发删除方式。TiDB Operator 启动多个 Go 协程,每个 Go 协程每次删除一个文件。

    对于 TiDB Operator v1.2.4 及以后的版本,你可以使用 Backup CR 中的以下字段控制清理行为:

    • .spec.cleanOption.pageSize:指定每次批量删除的文件数量。默认值为 10000。

    • .spec.cleanOption.disableBatchConcurrency:当设置为 true 时,TiDB Operator 会禁用并发批量删除方式,使用并发删除方式。

      如果 S3 兼容的后端存储不支持 DeleteObjects 接口,默认的并发批量删除会失败,需要配置该字段为 true 来使用并发删除方式。

    • .spec.cleanOption.batchConcurrency: 指定并发批量删除方式下启动的 Go 协程数量。默认值为 10。

    • .spec.cleanOption.routineConcurrency: 指定并发删除方式下启动的 Go 协程数量。默认值为 100。

  • 相关阅读:
    (笔记)Kotlin——Android封装ViewBinding之二 优化
    面试想吊打面试官?阿里架构师教你吃透Spring(Boot、Cloud、MVC)
    PostgreSQL的主从复制方式
    SQLServer导出数据库字典
    3D学习论文参考-ACCURATE EYE PUPIL LOCALIZATION USING HETEROGENEOUS CNN MODELS
    JAVA 100道题(26)
    九八投洽会,图扑为你再现工业元宇宙
    『Java安全』XStream 1.4-1.4.6&1.4.10反序列化漏洞CVE-2013-7285复现与浅析
    harbor网桥修复 产生了多个br-设备
    前端学习笔记--ES6
  • 原文地址:https://blog.csdn.net/weixin_42241611/article/details/125600374
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号