TiDB 冷热数据存储以及归档

【 TiDB 使用环境】生产环境 /测试/ Poc
【遇到的问题:问题现象及影响】
场景:存储消息中心历史数据,需要对数据进行冷热分离,减少资源。比如用Tidb存储近三个月的数据,近两年的冷数据该怎么存储,需要分表吗,该怎么做冷备归档。
请问大佬们有没有什么比较好的方案

专栏 - TiDB 冷热存储分离解决方案 | TiDB 社区

2 个赞

这个可以实现 Placement Rules in SQL

1 个赞

Placement Rules in SQL的方法能实现最终数据的冷热分离。但是由于其不保证过程中的数据的冷热分离,所以有时候可能热数据再过程中会在冷介质中导致业务有所感知。这点需要自行评估。这是我在6.5.0版本用过结论,不知道6.5 后续有没有优化。

要冷备就导出来呗,然后库里删了就好了

只能手工定期处理了

业务上,冷数据可以转储到另外的数据库上

超过3个月的定时任务迁移到历史库

最近刚好也在做数据归档,我是这样做的:

  1. 用BR全量备份需要归档的表;
  2. 每天通过dumping过滤导出前一天的数据,需要有日期字段,也可以按月或按季度导,看自己的需求;
  3. 使用TTL自动过滤数据,例如需要保留3个月的在线数据库,可以设置TTL=4个月,多一个月冗余查询;
    https://docs.pingcap.com/zh/tidb/stable/time-to-live
  • dumpling导出的文件可以压缩保存到NAS等比较便宜的存储上面
  • 我测试了dumpling和mysqldump的导出速率,同样过滤条件导出4GB的目标SQL文件,dumpling大概30分钟,mysqldump只要2分钟,所以我选择了mysqldump做为日常导出的工具
1 个赞

楼主可以参考这个方案,这里是存储了300TB的数据。同一个tidb集群,最近3个月的热数据存储在NVME盘,3个月以前的冷数据都存储在普通HDD。已经跑了几年了。