头图

数据库在运行过程中会出现各种故障,因此对数据库进行必要的备份是非常重要的。有了数据库的备份就可以在数据库出现错误时保证数据的安全。因此TiDB数据库提供了强大的数据库备份与恢复机制。

视频讲解如下:
https://www.bilibili.com/video/BV1MP5JzpEmL/?aid=114358923302...

一、 TiDB备份和恢复基础

基于Raft协议和合理的部署拓扑规划,TiDB实现了集群的高可用,当集群中少数节点挂掉时,集群依然能对外提供服务。在此基础上,为了更进一步保证用户数据的安全,TiDB还提供了集群的备份与恢复(Backup & Restore,BR)功能,作为数据安全的最后一道防线,使得集群能够免于严重的自然灾害,提供业务误操作“复原”的能力。

TiDB备份恢复功能可以用于满足以下业务的需求:

  • 备份集群数据到灾备系统,并保证Recovery Point Objective(RPO)低至5分钟,减少灾难场景下数据的丢失。
  • 处理业务数据写错的案例,提供业务操作的“复原”能力。
  • 审计业务的历史数据,满足司法审查的需求。
  • 复制(Clone)生产环境,方便问题诊断、性能调优验证、仿真测试等。

二、 全量(快照)备份与恢复

全量备份是对集群某个时间点的全量数据进行备份,TiDB的全量备份也可以叫做快照备份。因为TiDB集群快照数据包含某个物理时间点上集群满足事务一致性的所有数据。全量备份一般会占用较大的存储空间,且只包含某个时间点的集群数据。

下面展示了使用BR工具执行快照备份后生成的目录文件信息:

[root@tidb ~]# tree /backup/snapshot/
/backup/snapshot/
└── snapshot-
    ├── 5
    │   ├── 32_230_ed85b58a2c9d_1739778932458_default.sst
    │   ├── 32_230_ed85b58a2c9d_1739778932458_write.sst
    │   ├── 32_230_f0f9b1a4aa3e_1739778932311_write.sst
    │   ├── 32_230_f4dd8b9e5561_1739778932359_write.sst
    │   ├── 32_230_f70c98a950fe_1739778932095_write.sst
    │   ├── 32_230_fd54db249c01_1739778932399_write.sst
    │   ├── 32_230_fe4f4fe208b8_1739778932299_write.sst
    │   └── 32_230_fea1363341eb_1739778932201_write.sst
    ├── backup.lock
    ├── backupmeta
    ├── backupmeta.datafile.000000001
    ├── backupmeta.schema.000000002
    └── checkpoints
        └── backup

三、 日志备份与恢复

快照备份一般会占用较大的存储空间,且只包含某个时间点的集群数据。如果需要灵活地选择恢复的时间点(即:实现PITR),可以使用日志备份和日志恢复。有了日志备份后,通过br restore point功能,可以指定要恢复的时间点。BR会自动判断和读取恢复需要的数据,然后将这些数据依次恢复到指定的集群。

下面展示了使用BR工具执行日志备份后生成的目录文件信息:

[root@tidb ~]# tree /backup/logbackup
/backup/logbackup
├── backup.lock
├── backupmeta
└── v1
    ├── 20250217
    │   └── 08
    │       ├── 1
    │       │   └── 456073106335727621-93e1553a-6a78-4dc3-874c-b4fcc18731dd.log
    │       └── 4
    │           ├── 456073104696803332-317073c0-5462-46b2-99b0-8bc960b6e704.log
    │           └── schema-meta
    │               └── 456073106347524098-90ad3814-4b12-4094-b569-02288355512d.log
    ├── backupmeta
    │   ├── 456073098312810497-032a60d7-f240-47a9-b993-1bcd4b2b947f.meta
    │   └── 456073098312810497-2b5f0d4f-2a06-472c-9d78-154f851c5c0e.meta
    └── global_checkpoint
        ├── 1.ts
        ├── 4.ts
        └── 5.ts

赵渝强老师
36 声望18 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...