zoukankan      html  css  js  c++  java
  • 清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。


    清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。


    环境介绍 
    线上磁盘空间不足,truncate了许多能动的表,磁盘空间还是占据了87%,我们的nagios报警阀值是80%。所以不断的还会收到email以及短信报警。需要根据时间字段date_created清理,但是在设计之初由于当初的开发人员考虑不足所以date_created字段没有建立索引。另外这些数据可以不用备份,直接删除掉。

    问题来了,这么大记录量的表,根据date_created字段删除记录,而且还没有索引,难度肯定非常大。enl.ibd文件大小29G大小,磁盘剩余空间32G,两者差距比较小。

    [mysql@xxxx-xxx ide]$ ll -h enl.ibd
    -rw-rw---- 1 mysql mysql 29G Aug 30 07:21 enl.ibd


    方案策划中,大概准备采用shell命令。

    虽然date_created 没有索引,但是我们做过实验

    mysql> select * from enl where date_created < "2013-01-01 00:00:00" limit 1000;

    ......

    1000 rows in set (0.00 sec)

    看来执行效果还不错,那再试下delete效果

    mysql> delete from enl where date_created < "2013-01-01 00:00:00" limit 1000;

    Query OK, 1000 row affected (2.00 sec)


    看起来可以每次删除1000条,写脚本delete吧

    for ((i=0;i<1000000;i++));do mysql -uroot -e 'use iden;delete  from enl where date_created < "2013-01-01 00:00:00" limit 1000;';done


    等delete操作完成之后,找业务低峰期执行 alter table enl  engine=innodb;来释放磁盘空间。


  • 相关阅读:
    word 导出(带有一个图片,一张datatable)
    asp.net 获取当前时间的格式
    解决<compilation debug="true" targetFramework="4.0"> 问题
    安装office专业增强版2016(word/excel/ppt/visio)的记录
    JS,Jquery获取各种屏幕的宽度和高度
    utc本地时间
    extjs使用gridPanel演示基于asp.net使用json传送数据
    获取物料指定日期的库存
    resize
    关于完工入库研究
  • 原文地址:https://www.cnblogs.com/james1207/p/3292165.html
Copyright © 2011-2022 走看看