【TiDB 4.0 PCTA 学习笔记】- 3.4 备份恢复工具 BR@2班+欧阳

课程名称:3.4 备份恢复工具 BR

学习时长:36min

课程收获:使用 BR 快速对 TiDB 集群进行备份还原

课程内容:

  • BR原理

    • 限制

      • 只支持TiDB >= v3.1

      • 只支持在全新集群上进行恢复

      • BR备份最好按串行执行,否则不同备份任务会互相影响

        • 全量备份中,不要再做增量备份
        • 不要起多个全量备份任务
    • 原理

      • BR发送备份或恢复操作命令(实际上是由PD发送)到各个TiKV节点
      • TiKV接到命令后,执行备份或恢复,将数据(sst文件)放在各自的备份目录
      • 备份会自动过滤系统库(mysql、information_schema)
    • 操作

      • 由于BR恢复需要新集群能访问全量备份文件,建议备份存放在共享网络存储上

      • 为了更快的备份,可以在每个TiKV节点上插入第二块盘备份,备份完再将数据迁移到总备份(可行,并不推荐)

      • 备份前,需要修改GC time为大于备份时间

        • 因为备份时TiKV根据事务号去查询MVCC,之后生成SST文件,若期间发生GC,备份出问题
        • update mysql.tidb set variable_value = ‘30m’ where variable_name=‘tikv_gc_lefe_time’;
        • 新版本这一步是自动进行,且备份完恢复原值
      • 常用命令

        • 备份多个表

          • br backup table --db ${DB} --table order_line,order -s local:///br_data --pd ${PD_ADDR}:2379 --log-file backuo-nfs.log
        • 备份多个库

          • br backup db --db db1,test -s local:///br_data --pd ${PD_ADDR}:2379 --log-file backuo-nfs.log
        • 全量备份

          • br backup full -s local:///br_data --pd ${PD_ADDR}:2379 --log-file backuo-nfs.log
      • 参数

        • –ratelimit unit 限速
        • -L, --log-level string 日志登记,默认info
        • -s, --storage string 存储url
        • –backupts string 不指定则使用当前时间作为事务号
        • –checksum 最后是否执行checksum,默认true
  • BR(增量)备份

    • 需要基于上一次全量备份,有以下限制

      • 与全量备份在不同的保存路径

      • GC SafePoint必须在LastBackupTS之前

        • 比如10点全量备份,11点增量备份,则10-11之间不能GC
    • 备份命令

      • br backup full --pd ${PD_ADDR}:2379 -s local:///br_backup --lastbackupts ${LAST_BACKUP_TS}

      • 解释

        • 备份的是(LAST_BACKUP_TS, current PD timestamp)之间的增量数据
        • LAST_BACKUP_TS=br validate decode --field="end-version" -s local:///br_data,也可通过备份日志获取
        • 使用–lastbackupts会增量备份从该点到当前的数据
  • BR(增量)恢复

    • 恢复原理

    • 操作

      • 若使用本地存储,则在恢复前,需要把全量的备份文件卡拷贝到每个TiKV节点

      • 常用命令

        • 指定表恢复

          • br restore table …
        • 指定库恢复

          • br restore db …
        • 指定全量恢复

          • br restore full …
    • 关于增量恢复

      • 增量恢复和全量恢复没有什么不同
      • 只有一点需要注意:增量恢复只有在last backup ts指定的全量备份恢复完后,才能进行恢复
  • 常见问题处理

    • 日志出现"key locked Error"

      • 形式:log - [“backup occur kv error”][error="{"KvError":{"locked":
      • BR会尝试清理lock,少量的这类errors并不会影响备份的正确性
    • 日志出现:log - Error: msg:"lo(Custom { kind: AlreadyExists, error:"[5_5359_42_123_default.sst] is already exists in /dir/backup_local/" }

      • 改变不了备份目录
    • 恢复时,报 error : could not read local://…download sst failed

      • 每个TiKV节点都要能访问全量数据文件
    • 权限错误,及时使用root也不能修复

      • 需要确认TikV有权限访问备份目录

        • 备份,需要保证有写权限
        • 恢复,需要保证有读权限
      • 请记住,备份文件是由TiKV保存的

    • BR与Io错误相关的

      • 一般是TiKV写盘时遇到的系统调用错误,检查备份目录和文件系统的挂载模式,可以尝试到切换为另一个目录或另一个盘
      • 已知,备份到Samba挂载的网络磁盘,遇到过 Code:22(invalid Argument) error

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。