开发-通用设计-基于时间的MySql表数据备份

需求:历史项目,随着项目的运行2年多,单表数据越来越大,越来越影响性能。

分析:数据是有热点的,近3个月的数据查询频率较高,时间越久查询的越少。进行分表操作,然后再调整下代码查询逻辑。

说明:ShardingSphere或者Mysql的分区方法也可以解决,但是目前的框架里没有使用shardingsphere,直接引用可能会导致一些其他问题,比如inser into select不能用。

Mysql的PARTITION的需要新建表然后做迁移。所以为了简单处理就用此方法拆分下。

原逻辑:查询->表名

现逻辑:查询->时间->返回备份的表名->查询对应的备份表

备份配置表
LOG_ID主键
TABLE_NAME主表名称
COL_NAME列名:依据此列进行划分备份
COL_FMT日期格式:例如yyyyMMddHHmmss | yyyyMMdd
BACK_PRE_DAYS备份预备天数:即距离当前日期几天的需要备份
WEIGHT权值:用途是确定备份排序,每次从小的开始并累计加1,避免每天一直再处理同一个表数据,雨露均沾。

说明:启动一个定时任务,仅在指定时间范围内去备份,现有是01:30-05:00,即凌晨1点30分开始操作,如在05点未执行完也停止,防止对正常业务产生影响。总体策略:小步慢跑。

备份配置表数据样例:

 依据规则备份的对应记录表:

 手工核验数据是否备份有误,最后再手动删除下已备份的数据。

后续手动核对没有问题,再启动一个定时任务处理超期的已备份数据。

代码质量有限,就不全贴了,如有需要代码的可留言发送。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值