TiDB 如何实现 PITR (按时间点恢复)

TIDB 貌似没有binlog,那么如何实现基于时间点恢复呢, 有相关的流程文档吗

tidb有binlog日志,看官网文档

1 个赞

看下这里
TiDB 日志备份与 PITR 功能架构 | PingCAP 文档中心
TiDB 日志备份与 PITR 使用指南 | PingCAP 文档中心

2 个赞

有binlog,也可以用br

有binlog

用br吧

br+日志备份,实时性不算很高,极端情况下可能会丢2分钟以上的数据

BR工具

BR工具来实现

br备份恢复工具

用br搞吧

对于按照时间点恢复的功能,v6.5之前建议使用 tidb binlog,v6.5以及之后的版本建议使用BR 的 PITR功能。从使用场景角度来看,PITR 通常用于在集群完全停止服务或数据损坏且无法使用其他方案恢复时,将集群的数据恢复到指定的时间点。使用 PITR 时,你需要通过一个新的集群来完成数据恢复。

文章可以参考:专栏 - 坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析 | TiDB 社区

另外,类似的,对于主从实时同步场景也有相近的情况,v6.5之前建议使用 tidb binlog,v6.5以及之后的版本建议使用TiCDC工具。

1 个赞

#进行PITR。如果异机恢复,不需要关闭日志备份,如果是本机恢复,需要关闭备份。
PITR 仅支持恢复到全新的空集群。
PITR 仅支持集群粒度的恢复,不支持对单个 database 或 table 的恢复。
PITR 不支持恢复系统表中用户表和权限表的数据。
PITR 数据恢复任务运行期间,不支持同时运行日志备份任务,也不支持通过 TiCDC 同步数据到下游集群。

如果是本机恢复,恢复前先删除数据库:
drop database lightning_task_info;
drop database dm_meta;
drop database test;

进行恢复
tiup br restore point --pd xx.xx.xx.xx:2379 --storage=‘local:///backup/brbak/tidb-test/logbackup’ --full-backup-storage=‘local:///backup/brbak/tidb-test/fullbackup-20240702’ --restored-ts ‘2024-07-02 08:42:00+0800’

#清理上次备份之前的日志备份
FULL_BACKUP_TS=tiup br validate decode --field="end-version" --storage "local:///backup/brbak/tidb-test/fullbackup-20240702"| tail -n1
tiup br log truncate --until=${FULL_BACKUP_TS} --storage “local:///backup/brbak/tidb-test/logbackup”

br 工具

tidb兼容mysql,有binlog日志。

用br

br备份工具

point只能针对空库进行恢复(也就是说库是空的才能进行)
tiup br restore point xxx

TiDB 本身不采用传统意义上的二进制日志(binlog)来实现数据的持久化和复制,而是采用了自己的数据复制机制。在 TiDB 的早期版本中,可以通过 TiDB Binlog 来实现类似于传统数据库的 binlog 功能,但从 TiDB 7.5.0 版本开始,TiDB Binlog 的数据同步功能不再提供技术支持,推荐使用 TiCDC 作为数据同步的替代方案

有binlog,也可以用br