发布时间:2024-11-22 13:01
简介
当你的 MySQL 数据库上业务跑了一段时间之后,就会有一些冷数据了,有些冷数据业务根本不会去查询,那么这些冷数据就需要从交易库归档到历史库。
这样做主要有两方面原因:
节约成本,因为交易库的服务器硬件会比历史库价格昂贵的多;
提高数据库查询速度。
本文将通过三个部分,来介绍如何将冷数据归档:
MySQL 数据库冷数据有哪些归档方案
MySQL 数据库冷数据归档方案如何选择
如何丝滑的从正在使用的单表中归档部分冷数据,并从单表中删除归档数据
归档数据场景
生产 MySQL 数据库运行一段时间之后,总会有一些数据,应用不需要了,但是数据也不能直接删除,所以需要数据库维护人员,将这些历史数据进行归档。
在这里总结了一下,被归档的表总共有 3 种场景。
按照天、月、年分表归档场景
举个例子,业务订单表按照月份进行分表,在数据库里,表会创建成以下形式:
t_order_202001
t_order_202002
....
t_order_202011
t_order_202012
如果产品设计,只需要查询最近 13 个月的订单数据,那么 13 个月之前的表就属于冷数据,可以做归档处理,此类场景,数据归档比较容易,如果是成熟的产品,这种场景会很多。
分区表归档场景
有些时候,业务量不高不低,所以将表设计成分区表,按照月、年进行分区。如果产品设计,只需要保留最近 13 月的数据,那 13 个月之前的数据,就需要做归档处理。
这种场景需要按照日期查询条件,将归档数据导出,并导入到历史库,最后将归档分区删除掉。
单表部分数据归档场景
单表部分数据归档场景,这个场景对于数据库运维人员来说,是最麻烦的。
在业务初期,由于设计人员没有正确估计数据量,后期业务业务起量,导致单表数据太多,影响应用 SQL 语句的执行效率,导致查询性能下降,不得不将冷数据进行归档,归档的时候,不能影响业务,所以只能将归档数据导出,让后一条条的将归档的数据删除,还不能删除的过快,否则还会造成主从复制延迟,影响业务查询。
MySQL 数据库冷数据有哪些归档方案
MySQL 数据库冷数据归档方法还是挺多的,在这里给大家介绍 4 种归档方案,每个方案都有的适用场景。下面就一起来看看吧。