mysql 数据库清理过期数据的时候失败  提示是删除数据量太大! 怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 数据库清理过期数据的时候失败  提示是删除数据量太大! 怎么办?相关的知识,希望对你有一定的参考价值。

利用sql语句删除:delete from m_customer_category where customer_sid_fk not in(select customer_sid from customer); 参考技术A sql语句是什么?报错信息是什么? 参考技术B 有些时候是数据量太大了,没有办法放新的了就要清理一些冗余数据还有的时候是清理一些空间出来加大内存啊,还有就是清理一些物理空间出来使数据库和操作系统的可利用空间更大否则会使数据库启动不了的。原因很多的看具体情况

elasticsearch 如何清理过期的数据

使用elasticsearch收集日志进行处理,时间久了,很老的数据就没用了并且占用很大的磁盘,这个时候就要对过期数据进行清理

删除elasticsearch数据分为两种:一种是删除索引(数据和表结构同时删除,作用同sql server 中 drop table "表格名"),另一种是删除数据(不删除表结构,作用同 sql server中delete 语句)

1、删除索引

#查询索引
[root@ecloud-elk-05 opt]# curl -u zhanghao:mima -XGET 'http://10.56.0.103:9200/_cat/indices' 
green  open bizlog-2021.09.11                             pHsgvR7JQhmgMIBX24zhJg  1 1  25506896  2480707   44.3gb   22.1gb
green  open bizlog-2021.10.01                             noexo6r6Qe61qxmB30YzBQ  1 1  17382250  1859034   26.3gb   13.1gb
green  open bizlog-2021.09.12                             oYy6PpJERKatZnbhVJ6ZyA  1 1  19184655  1839037   33.1gb   16.5gb
green  open bizlog-2021.09.13                             w2LY5073QGy1I7r_9j1qag  1 1  29137518  2598039     49gb   24.5gb
green  open deliver-2021.11.21                            iNezTH7ISHmTt_dG3SdIvg 10 1     20071        0    7.9mb    3.9mb

#查询索引的列表
[root@ecloud-elk-05 opt]# curl -u zhanghao:mima -XGET 'http://10.56.0.103:9200/_cat/indices' |awk 'print $3' | awk -F'-' 'print $1' |sort |uniq -c
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 45633  100 45633    0     0  41564      0  0:00:01  0:00:01 --:--:-- 41597
     46 api_nginx_log
      2 .apm
      1 .async
    107 bizlog
     68 ctlog
     71 deliver
      1 .kibana_1
      1 .kibana_task_manager_1
      1 redis
      1 .reporting
      1 .security
     71 zmms_system

#清理索引
[root@ecloud-elk-05 0]# curl -XDELETE -u zhanghao:mima http://10.56.0.103:9200/ctlog-2021.09.02
"acknowledged":true[root@ecloud-elk-05 0]# 

清理索引的脚本一

[root@ecloud-elk-05 opt]# cat delete_es.sh 
#********************************************************************
#Author:		    yzl
#QQ: 			    calm_yzl@163.com
#Date: 			    2021-11-23
#FileName:		    es_index_clear.sh
#URL: 			    yzil.cn
#Description:		The test script
#Copyright (C): 	2021 All rights reserved
#********************************************************************

username=zhanghao
passwd=mima
ruikaecs='10.56.0.103'

datemask=$(date -d "-30 day" '+%Y-%m-%d')
index_list=(api_nginx_log bizlog ctlog deliver zmms_system)
for indexname in $index_list[@];do
  echo "`date '+%Y%m%d-%H%M%S'`clean index data:$indexname-$datemask"
  curl -XDELETE -u $username:$passwd "http://$ruikaecs:9200/$indexname-$datemask"
  echo "done"
done

 清理索引的脚本二

#Author:		    yzl
#QQ: 			    calm_yzl@163.com
#Date: 			    2021-11-23
#FileName:		    es_index_clear.sh
#URL: 			    yzil.cn
#Description:		The test script
#Copyright (C): 	2021 All rights reserved
#********************************************************************

# 需要清理几天以前的索引日志
CLEAN_DAY=30

# 获取N天以前的年月日
YEAR=$(date -d "$(date -I) -$CLEAN_DAY"day"" +%Y)
MONTH=$(date -d "$(date -I) -$CLEAN_DAY"day"" +%m)
DAY=$(date -d "$(date -I) -$CLEAN_DAY"day"" +%d)

# 获取需要过滤N天前的ES索引数据
DATA=`curl -s http://zhanghao:mima@10.56.0.103:9200/_cat/indices?v \\
|awk '/[0-9]4.[0-9]2.[0-9]2/print $3' |awk -F[-.] 's2=mktime($(NF-2)" "$(NF-1)" "$NF" 0 0 0");\\
s1=systime()if(s1-s2 >= 86400*"'$CLEAN_DAY'") print $0'`

echo "即将清理"$YEAR'-'$MONTH'-'$DAY"前ES索引数据>>>>>>>>"
echo "清理数据为: "$DATA 

# 执行清理工作
for i in $DATA
    do
    sleep 1
    #curl -XDELETE -u zhanghao:mima http://10.56.0.103:9200/$i
done

echo "=======================" 
echo    "执行完成"
echo "======================="

2、使用官网 delete_by_query进行删除

curl -u 用户名:密码  -H'Content-Type:application/json' -d'
    "query": 
        "range": 
            "@timestamp": 
                "lt": "now-7d",
                "format": "epoch_millis"
            
        
    

' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty"

-u是格式为userName:password,使用Basic Auth进行登录。如果elasticsearch没有使用类似x-pack进行安全登录,则不需要加-u参数
-H是指定文档类型是json格式
-XPOST是指定用POST方式请求
-d是指定body内容


    "query": 
        "range":  //范围
            "@timestamp": //时间字段
                "lt": "now-7d",//lt是小于(<),lte是小于等于(<=),gt是大于(>),gte是大于等于(>=),now-7d是当前时间减7天
                "format": "epoch_millis"
            
        
    


定时删除

$ crontab -e

* 0 * * * /usr/bin/curl -u username:password  -H'Content-Type:application/json' -d'"query":"range":"@timestamp":"lt":"now-7d","format":"epoch_millis"' -XPOST "http://127.0.0.1:9200/*-*/_delete_by_query?pretty" > /tmp/elk_clean.txt

每天0点删除超过7天的无效索引

优点:

不依赖第三方插件或者代码

简单易理解

不需要指定索引名称可用*通配符删除

缺点:

效率低

常见命令

查看索引列表
curl -k https://your_username:your_password@10.124.10.27:9200/_cat/indices?v

查询集群是否健康
curl -k https://your_username:your_password@10.124.10.27:9200/_cluster/health

查看所有shard
curl -k https://your_username:your_password@10.124.10.27:9200/_cat/shards

启动命令
/usr/local/elasticsearch/bin/elasticsearch -d

以上是关于mysql 数据库清理过期数据的时候失败  提示是删除数据量太大! 怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

mysql定时任务event——清理过期数据 (转)

elasticsearch 如何清理过期的数据

如何解决svn清理失败 不能更新 cleanup失败 cleanup乱码 更新乱码 svn更新提示清理 清理乱码不能清理 svn故障修复SVN cleanup 陷入死循环 svn cleanup时遇

SVN更新失败,清理操作后更新依然会更新失败;

MySQL bin-log 日志清理方式

安装易优cms提示 数据库连接失败,请重新设定