一、描述
因为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 即可。
注意增量备份有以下限制:
- 增量备份需要与前一次全量备份在不同的路径下
- GC safepoint 必须在 lastbackupts 之前
你可以使用 validate 指令获取上一次备份的时间戳,示例如下:
LAST_BACKUP_TS=`br validate decode --field="end-version" -s local:///home/tidb/backupdata | tail -n1`
增量恢复的方法和使用 BR 进行全量恢复的方法并无差别。需要注意,恢复增量数据的时候,需要保证备份时指定的 last backup ts 之前备份的数据已经全部恢复到目标集群。
三、注意事项
- 恢复单个表时,恢复完成后需要执行 ANALYZE TABLE (单个库则会自动ANALYZE)
- 恢复的数据 TiCDC/Drainer 不会同步到下游
- 恢复时必须为空表或者表不存在才能恢复
- 备份数据可以恢复到另外的集群
- BR 只支持在 new_collations_enabled_on_first_bootstrap 开关值相同的集群之间进行操作。这是因为 BR 仅备份 KV 数据。如果备份集群和恢复集群采用不同的排序规则,数据校验会不通过