TIDB 如何增量备份

TIDB 全量 备份:
#! /bin/bash

设置MinIO的管理员账号和密码

export MINIO_ROOT_USER=myminio_admin
export MINIO_ROOT_PASSWORD=mJ7gm4SXFJF28UoD6T9a4W

设置AWS访问密钥

export AWS_ACCESS_KEY_ID=myminio_admin
export AWS_SECRET_ACCESS_KEY=mJ7gm4SXFJF28UoD6T9a4W

添加MinIO主机别名

mc config host add tidb-test http://192.168.136.101:9000 myminio_admin mJ7gm4SXFJF28UoD6T9a4W
mc config host ls tidb_test

创建存储桶

mc mb /tidb/backup/bucket

生成唯一的存储桶名称

timestamp=$(date +“%Y%m%d%H%M%S”)
bucket_name=“backup-${timestamp}”

执行全量备份

/usr/bin/br backup full --ratelimit 100 --pd “192.168.136.101:2379” --storage “s3://bucket/${bucket_name}”
–send-credentials-to-tikv=true --s3.endpoint “http://192.168.136.101:9000” --log-file “/tidb/backup/backup_${timestamp}.log”

增量 备份:

#! /bin/bash
export MINIO_ROOT_USER=myminio_admin
export MINIO_ROOT_PASSWORD=mJ7gm4SXFJF28UoD6T9a4W

export AWS_ACCESS_KEY_ID=myminio_admin
export AWS_SECRET_ACCESS_KEY=mJ7gm4SXFJF28UoD6T9a4W

添加MinIO主机别名

mc config host add tidb-test http://192.168.136.101:9000 myminio_admin mJ7gm4SXFJF28UoD6T9a4W
mc config host ls tidb_test

创建存储桶

mc mb tidb/backup/bucket

生成唯一的存储桶名称

timestamp=$(date +“%Y%m%d%H%M%S”)
bucket_name=“backup-${timestamp}”

获取上次全量备份的时间戳

last_backup=$(mc cat /tidb/backup/bucket/last_backup)

判断是否需要执行全量备份

if [ -z “$last_backup” ]; then
echo “$timestamp” | mc pipe /tidb/backup/bucket/last_backup
# 执行全量备份
/usr/bin/br backup full --ratelimit 100 --pd “192.168.136.101:2379” --storage “s3://bucket/${bucket_name}”
–send-credentials-to-tikv=true --s3.endpoint “http://192.168.136.101:9000” --log-file “/tidb/backup/backup_${timestamp}.log”
else
# 执行增量备份
/usr/bin/br backup incremental --ratelimit 100 --pd “192.168.136.101:2379” --storage “s3://bucket/${bucket_name}”
–send-credentials-to-tikv=true --s3.endpoint “http://192.168.136.101:9000” --last-backup “$last_backup” --log-file “/tidb/backup/backup_${timestamp}.log”
fi

更新上次全量备份的时间戳

echo “$timestamp” | mc pipe /tidb/backup/bucket/last_backup

请问下 这个问题应该怎么处理

D4$ZU3AVB988M9X(UUH7RQ

一个是-一个是_
然后就找不到了。

我的建议是先吃饭再说,临近吃饭时间,低血糖的时候是容易出现这个问题。别问我怎么知道的。:joy:

1 个赞

提个醒,楼主发帖注意下内容脱敏哈,尤其是像管理员账号和密码、 AWS访问密钥啥的,尽量信息保护不发到网上。

另外解决办法可以参考楼上猫大佬提到的,注意名称问题,调整后再试试

1 个赞

还是不行

自己 虚拟环境没事

br是啥版本的,你这备份命令那里来的,跟官方文档的不一样啊,我看了6.5和7.5的文档都没你这命令,https://docs.pingcap.com/zh/tidb/stable/br-incremental-guide#对集群进行增量备份
然后这个增量备份官方也不维护了,后期建议用日志备份pitr。

1 个赞

一样了还是不行,报什么错呢?


这个选项用错了吧,看看是不是–lastbackupts

你都用了7.5版本的tidb,为啥增量不选择日志备份的方式

这个是不是 版本的 bug

不是。br要求要么使用nfs或者s3这类共享存储备份,要么就要求每个tikv上有个一样路径的文件夹,要有相同的访问权限。

你应该用的是s3来存储备份,为什么会要求本地有个文件夹呢?多数是命令里面设置的不太对。把br命令给出来。

判断是否需要执行全量备份

if [ -z “$last_backup” ]; then
echo “$timestamp” | mc pipe /tidb/backup/bucket/last_backup

执行全量备份

/usr/bin/br backup full --ratelimit 100 --pd “192.168.136.101:2379” --storage “s3://bucket/${bucket_name}”
–send-credentials-to-tikv=true --s3.endpoint “http://192.168.136.101:9000” --log-file “/tidb/backup/backup_${timestamp}.log”
else

执行增量备份

/usr/bin/br backup incremental --ratelimit 100 --pd “192.168.136.101:2379” --storage “s3://bucket/${bucket_name}”
–send-credentials-to-tikv=true --s3.endpoint “http://192.168.136.101:9000” --last-backup “$last_backup” --log-file “/tidb/backup/backup_${timestamp}.log”
fi

我看了下你这块的脚本逻辑和现在的方式,出入确实挺大的。
现在br备份方式是

TiDB 支持两种类型的备份,应该使用哪种备份? 全量备份包含集群某个时间点的全量数据,日志备份包含业务写入在 TiDB 产生的数据变更记录。推荐这两种备份方式一起使用:

  • 开启日志备份:运行 br log start 命令来启动日志备份任务,任务会在每个 TiKV 节点上持续运行,以小批量的形式定期将 TiDB 变更数据备份到指定存储中。
  • 定期执行快照(全量)备份:运行 br backup full 命令来备份集群快照到备份存储,例如在每天零点进行集群快照备份。

https://docs.pingcap.com/zh/tidb/stable/br-use-overview#如何备份数据

br log start这个日志备份开启来就不会停。不需要隔一段时间就执行一次。
br backup full这个快照备份需要定期执行。
你这个脚本可能是以前版本的做法了。

脚本、截图可以传附件, 内容太多,容易眼花。。。

D4$ZU3AVB988M9X(UUH7RQ
这个主机别名有问题,确认一下

检查一下目录

收藏一下

建议pitr时时,回退时间点也得到提高