一、描述

因为tidb正式上线,所以需要一份完整的br备份,tidb的br备份可以有三种方式,一是放到本地上(这个方案在还原的时候需要将其他tikv上的数据迁移到本tikv上,比较麻烦),二是放在共享存储上,三是放到S3上,基于一些方面的考虑选择放到S3上

二、备份和恢复

1.示例

./br backup table \
    --pd "*****" \
    --db br_tmp \
    --table b \
    --storage "s3://****/tidb" \
    --s3.region "eu-west-1" \
    --send-credentials-to-tikv=true \
    --ratelimit 128 \
    --log-file backuptable.log
    
    
    
    
 ./br restore table \
    --pd "*****:2379" \
    --db br_tmp \
    --table a \
    --storage "s3://*****/tidb" \
    --s3.region "eu-west-1" \
    --send-credentials-to-tikv=true \
    --ratelimit 128 \
    --log-file backuptable.log

2.参数

参数

意义

备份级别

full:全量备份

db:指定数据库

table:指定表

-s 或 --storage

备份保存的路径

–pd

pd服务的地址

-V

查看br版本

–ca

指定 PEM 格式的受信任 CA 的证书文件路径

–cert

指定 PEM 格式的 SSL 证书文件路径

–key

指定 PEM 格式的 SSL 证书密钥文件路径

–status-addr

BR 向 Prometheus 提供统计数据的监听地址

–ratelimit

–ratelimit 选项限制了每个 TiKV 执行备份任务的速度上限(单位 MiB/s)

–filter 或 -f

筛选备份的库表

–s3.acl

设置 S3 预制 ACL,例如 认证读取

–s3.endpoint

设置 S3 端点 URL,请明确指定 http 或 https 方案

–s3.provider

设置 S3 提供程序,例如 aws, 阿里巴巴, ceph

–s3.region

设置 S3 区域,例如 us-east-1

–s3.sse

设置 S3 服务器端加密,例如 aws:kms

–s3.sse-kms-key-id

用于 S3 服务器端加密的 KMS CMK 密钥 ID。留空以使用 S3 拥有的密钥。

–s3.storage-class

设置 S3 存储类别,例如 标准

–log-file

日志文件名

–log-format

日志格式,默认为text

-L, --log-level

日志级别,默认为warn

-redact-info-log

设置是否屏蔽日志中的敏感信息

-c, --send-credentials-to-tikv

是否向 Tikv 发送凭据(默认为 true)

–switch-mode-interval

恢复时在 TiKV 上保持导入模式(默认 5m0s)

–check-requirements

是否在执行命令前启动版本检查(默认为 true)

–checksum

在任务结束时运行校验和(默认为 true)

–gcs.credentials-file

设置 GCS 凭证文件路径

–gcs.endpoint

设置 GCS 端点 URL

–gcs.predefined-acl

为对象指定 GCS 预定义的 acl

–gcs.storage-class

Specify the GCS storage class for objects

3.增量备份与恢复

如果想要备份增量,只需要在备份的时候指定上一次的备份时间戳 --lastbackupts 即可。

注意增量备份有以下限制:

  1. 增量备份需要与前一次全量备份在不同的路径下
  2. GC safepoint 必须在 lastbackupts 之前

你可以使用 validate 指令获取上一次备份的时间戳,示例如下:

LAST_BACKUP_TS=`br validate decode --field="end-version" -s local:///home/tidb/backupdata | tail -n1`

增量恢复的方法和使用 BR 进行全量恢复的方法并无差别。需要注意,恢复增量数据的时候,需要保证备份时指定的 last backup ts 之前备份的数据已经全部恢复到目标集群。

三、注意事项

  1. 恢复单个表时,恢复完成后需要执行 ANALYZE TABLE (单个库则会自动ANALYZE)
  2. 恢复的数据 TiCDC/Drainer 不会同步到下游
  3. 恢复时必须为空表或者表不存在才能恢复
  4. 备份数据可以恢复到另外的集群
  5. BR 只支持在 new_collations_enabled_on_first_bootstrap 开关值相同的集群之间进行操作。这是因为 BR 仅备份 KV 数据。如果备份集群和恢复集群采用不同的排序规则,数据校验会不通过