开发者社区> 问答> 正文

现已有未分区的日志表,占用数据量交大,如何优化磁盘?

因为公司刚成立一年,早期开发某个项目的时候,这个项目当时没有使用elk这些管理日志,直接放入到mysql innodb表中,而且该日志表一直是写频繁,查询少,只有在出现问题情况的时候,才让业务人员登录系统进行查询.现在这个表,经过一年后,业务爆发增长,占用磁盘空间780GB,目前已经部分业务停止向该表写入数据了,但是用的是阿里云的服务器,光一个表780GB就要花费不少费用,所以初期目标是对该表执行delete+optimize table,删除掉不需要的数据.但是delete操作好办,但是optimize table会对全表产生共享锁,可能费时将近一天左右,无法写入数据,这个显然是不能接受的,所以弱弱的问一下大佬,这个该如何优化以节省磁盘空间.
补充:delete操作好办,但是optimize table费时太大了.前者操作可以 直接基于MVCC 保证行锁,不影响业务写入.后者直接锁表,有点难.要短时间内能操作完,不要长时间停滞,导致升级费时太久.

展开
收起
Atom 2020-04-21 10:38:03 1049 0
1 条回答
写回答
取消 提交回答
  • 你可以设计一张新的分区表,把在线数据先写入新的表,然后再变更时间,把业务操作写入新的表,历史数据再慢慢迁移。等把需要的历史数据都迁移到新的分区表之后,直接把旧表备份后,drop掉就可以了
    来源:云原生后端社区

    2020-04-21 10:39:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载