数据冷热分离

简介

MySQL实际应用中,当某些表的数据超过千万之后,会造成表查询慢的情况,可以对这些表做一些优化,当然水平拆分是比较合适的,避免某一个表中数据量过大的方法。

但一般情况下,如果表中某些比较久远的历史数据,在访问不频繁的情况下,我们称之为冷数据,而某些最近的数据,经常会被访问查询,这些称之为热数据。我们以电商业务中的订单为例,电商平台某东,在用户中心中,我的订单,一般进入之后会直接展现的是最近3个月的订单记录,不会展现所有,但可以选择查看历史半年内的,一年内的订单数据。从开发的角度来分析,应该是将3个月以前的订单数据已经转移到了订单历史表中,以减少基本订单表中的数据,加快查询。这就是所谓的冷热数据分离。

一般可以定期做冷数据的分离,保证表中只保留最近一段时间内的数据,加快查询。

数据冷热分离操作

好了,理解了之后,直接上最近的一个脚本,非常方便的来做数据冷热分离的。

在已经做了读写分离的数据库情况下,操作步骤如下:

  1. 在slave数据库上导出指定日期比指定日期早的数据
  2. copy指定导出的数据到backup主机上
  3. 在backup主机上,导入到数据库中
  4. check导出的数据和导入的数据是否一致
  5. 在master数据库上,删除已经备份的数据

脚本后面再上。