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 数据库清理过期数据的时候失败 提示是删除数据量太大! 怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决svn清理失败 不能更新 cleanup失败 cleanup乱码 更新乱码 svn更新提示清理 清理乱码不能清理 svn故障修复SVN cleanup 陷入死循环 svn cleanup时遇