likes
comments
collection
share

千万级表数据优化处理方案一 背景 mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重 系统监控到拿单接

作者站长头像
站长
· 阅读数 23

一 背景

  1. mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重

千万级表数据优化处理方案一 背景 mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重 系统监控到拿单接

  1. 系统监控到拿单接口频繁出现超时告警
  2. 订单推送记录表数据量达到2000w以上,查询性能低下,平均在1.5s以上

二 目标

提升数据库集群性能,增加接口性能,mysql数据库保存近七天数据,数据做实时同步到mongodb,进行双写

  1. 搭建mongodb集群
  2. 搭建数据同步服务
  3. 数据同步服务监听binlog数据实时同步到mongodb
  4. 通过定时任务,每天执行一次删除数据,让订订单推送记录表保存最近七天数据

三 技术方案选择

Mysql冷热库分离
Mysql + Mongodb存储 +双写

技术方案对比

  1. 冷热库分离

千万级表数据优化处理方案一 背景 mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重 系统监控到拿单接

由于订单推送记录有很强的热尾效应,也就是最后面的数据会经常被查到,而前面的数据基本不会被查询,所以冷热库分离能够解决我们当前的情况,但是他存在一个缺点,比如热库的数据保存最近七天,而冷库为七天前数据会导致查询时很不方便,如果出现时间跨冷热库双表的时候,很难实现,另外,通过对数据增量的统计,每天会产生20w+条数据,一个月600w+数据,一年会新增7000w+数据,超过了mysql的存储极限,所以最终并没有采用此技术方案

  1. Mysql + Mongodb存储 +双写

相关技术

千万级表数据优化处理方案一 背景 mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重 系统监控到拿单接

同步流程 千万级表数据优化处理方案一 背景 mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重 系统监控到拿单接 mongodb有海量数据存储能力,可以解决mysql无法存储大数据量问题,提升查询性能,降低mysql集群压力,另外订单推送记录为日志类型数据,只存在新增和修改操作数据本身不敏感,且数据本身没有关联性非常适合mongodb存储

四 方案实现

  1. 回收mongodb集群

千万级表数据优化处理方案一 背景 mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重 系统监控到拿单接

  1. 新增数据实时同步服务easychange-recycle-sync-data
  2. 编写定时任务将mysql数据库表历史数据同步到mongodb(此定时任务只执行一次
  3. 编写定时任务删除mysql表数据,mysql表保持最近七天数据
  4. 平台侧查询数据库从mysql变更为mongodb

五 结果

  1. mysql数据库集群状态恢复正常

千万级表数据优化处理方案一 背景 mysql数据库集群cpu使用率经常出现cpu100%,性能问题严重 系统监控到拿单接

  1. 回收商拿单接口访问性能恢复正常,不再出现因数据库查询慢产生的接口超时情况,不再产生告警
转载自:https://juejin.cn/post/7419954652685680659
评论
请登录