TiDB 增量备份与恢复使用指南
TiDB 集群增量数据包含在某个时间段的起始和结束两个快照的变化差异的数据,以及之间的 DDL。增量备份的数据相对比全量备份数据而言数据量更小,适合配合快照备份一起使用,减少备份的数据量。进行增量备份的时候,需要保证备份时间范围内的多版本数据没有被 TiDB GC 机制回收。例如,每个小时进行一次增量备份,则需要调整 TiDB 集群的 GC Lifetime 设置至少大于 1 小时。
对集群进行增量备份
使用 br backup
进行增量备份只需要指定上一次的备份时间戳 --lastbackupts
,br 命令行工具会判定需要备份 lastbackupts
和当前时间之间增量数据。使用 validate
指令获取上一次备份的时间戳,示例如下:
LAST_BACKUP_TS=`tiup br validate decode --field="end-version" --storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}"| tail -n1`
备份 (LAST_BACKUP_TS, current timestamp]
之间的增量数据,以及这段时间内的 DDL:
tiup br backup full --pd "${PD_IP}:2379" \
--storage "s3://backup-101/snapshot-202209081330/incr?access-key=${access-key}&secret-access-key=${secret-access-key}" \
--lastbackupts ${LAST_BACKUP_TS} \
--ratelimit 128
以上命令会中:
--lastbackupts
:上一次的备份时间戳。--ratelimit
:每个 TiKV 执行备份任务的速度上限(单位 MiB/s)。storage
:数据备份到存储地址。增量备份数据需要与快照备份数据保存在不同的路径下,例如上例保存在全量备份数据下的incr
目录中。关于 URI 格式的详细信息,请参考外部存储服务的 URI 格式。
恢复增量备份数据
恢复增量数据的时候,需要保证备份时指定的 LAST_BACKUP_TS
之前备份的数据已经全部恢复到目标集群。同时,因为增量恢复的时候会更新数据,因此你需要保证此时不会有其他写入,避免出现冲突。
恢复全量备份数据,备份数据存储在 backup-101/snapshot-202209081330
目录下:
tiup br restore full --pd "${PD_IP}:2379" \
--storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}"
恢复全量备份后的增量备份数据,备份数据存储在 backup-101/snapshot-202209081330/incr
目录下:
tiup br restore full --pd "${PD_IP}:2379" \
--storage "s3://backup-101/snapshot-202209081330/incr?access-key=${access-key}&secret-access-key=${secret-access-key}"