ClickHouse删除分区报错:Exception: Table or Partition in default.od event xdr followas not dropped Reason:
执行语句删除某一天分区时出现错误,执行的删除语句如下:
alter table od_event_xdr_follow drop partition '2021-5-18';
ClickHouse删除分区时出现错误:
Received exception from server(version 21. 2.1):Code: 359 DB: Exception: Received from localhost: 9000. DB: Exception:
Table or Partition in default.od_event_xdr_follow not dropped Reason:
1. Size (14015 GB) is greater than max_[table/partition]_size_to_drop (50.00 GB)
2. File"/mnt/clickhousedata/flags/force_drop_table" intended to force DROP doesn t exist
How to fix thls:
1. Either increase(or set to zero)max [table/partition] size to drop in server config
2. Either create forcing file /mnt/clickhousedataflags/force_drop_table and make sure that clickhouse has write permission for itxample:sudo touch "/mnt/clickhousedata/flags/force_drop_table" && sudo chmod 666 "/mnt/clickhousedata/flags/force_drop_table"
出现这种错误的原因在报错中已经体现出来,就是ClickHouse默认对一次删除数据的大小有限制,不能超过50G,超过50G就会报错无法删除:
两种解决方式
第一种:通过修改配置文件
这种方式可以永久解决,但是修改完配置文件后需要重启ClickHouse来使之生效,如果我们的项目已经上线运行,不建议使用这种方式,因为往往线上数据量巨大才会导致我们删除时出现错误,而如此庞大的数据量在CK重启加载时很容易出现问题,所以生产环境下这种方式不推荐(有经验了之后我们可以提前就设置好配置文件)。
具体的步骤如下:
- 找到ClickHouse安装目录下的配置文件,通常是/etc/clickhouse-server/config.xml。
- 修改配置文件,改变可删除数据的大小限制为不限制。
sudo vim /etc/clickhouse-server/config.xml然后找到下面两个配置,放开注释,找不到就手动加入,
把配置内容改成0或者其他你想要设置的大小,0表示不限制
<max_table_size_to_drop>0</max_table_size_to_drop>
<max_partition_size_to_drop>0</max_partition_size_to_drop>
第二种:通过执行报错提示中的命令
我们看到报错提示中最后一句给我们了一个命令:
sudo touch "/mnt/clickhousedata/flags/force_drop_table" && sudo chmod 666 "/mnt/clickhousedata/flags/force_drop_table"
这个命令的意思是我们在ClickHouse的数据存储目录下创建一个force_drop_table的标识文件,这个文件表示下次执行删除时不进行最大50G的限制,下一次执行删除后也会同时删除这个文件,所以我们用这种方式时每次删除数据都需要先执行这个命令,这种方式的好处是不用重启服务,所以生产环境我们推荐使用这种方式。
具体的步骤如下:
- 在CK数据存储目录下创建出“flags/force_drop_table”文件夹和文件,并设置权限。
sudo touch "/mnt/clickhousedata/flags/force_drop_table" && sudo chmod 666 "/mnt/clickhousedata/flags/force_drop_table"
- 执行删除语句。
clickhouse-client --user user --password 'xxx' -q "alter table od_event_xdr_follow drop partition '2021-5-18'"
这样就可以删除成功啦!
定时删除多少天之前分区的脚本
- 编写shell脚本clickhouse-del.sh,内容如下
# 表示获取前七天的日志,格式是年-月-日
partition_day=`date -d -7day +%Y-%m-%d`
delSql="alter table od_event_xdr_follow drop partition '${partition_day}';"
echo `date "+%Y-%m-%d %H:%M:%S"` 执行命令clickhouse-client --user comleader --password 'comleader@818' -q "${delSql}" >> /home/clickhouse-log/delSql.log
# 先执行这个语句,让clickhouse跳过一次默认限制的可删除数据最大50G的限制,下一条执行语句会连同这个文件一起删除掉
touch '/mnt/clickhousedata/flags/force_drop_table' && sudo chmod 666 '/mnt/clickhousedata/flags/force_drop_table' >> /home/clickhouse-log/delSql.log
# 执行删除语句,注意sql需要被双引号括起来
clickhouse-client --user user --password 'xxx' -q "${delSql}" >> /home/clickhouse-log/delSql.log
echo `date "+%Y-%m-%d %H:%M:%S"` ${partition_day}分区已删除完成 >> /home/clickhouse-log/delSql.log
- 使用linux定时任务定时执行脚本
# 1. 先执行命令,打开定时任务编辑器
crontab -e
# 2. 添加一行命令(不需要时再最前加#即可),代表每天凌晨1点执行脚本
00 01 * * * /home/clickhouse-del.sh
# 输入:wq保存退出
# 3. 重启cron任务
/bin/systemctl restart crond.service
推荐一些ClickHouse的常用知识
https://blog.csdn.net/wangzaixiaochongzi/article/details/109469538
谢谢大家,如果对您有帮助记得一键三连哦!
ClickHouse删除分区报错:Exception: Table or Partition in default.od event xdr followas not dropped Reason:相关推荐
- HashMap遍历中删除元素报错
文章目录 一.问题描述 二.问题分析 三.解决问题 四.相关问题 一.问题描述 HashMap在遍历的时候进行删除元素报错java.util.ConcurrentModificationExcepti ...
- php zpo框架,Yii使用DeleteAll连表删除出现报错问题的解决方法
本文实例讲述了Yii使用DeleteAll连表删除出现报错问题的解决方法.分享给大家供大家参考,具体如下: 删除数据的时候,经常会遇到连联判断删除数据的条件,今天用Yii 的CDbCriteria生成 ...
- linux格式化扩展分区报错解决
Linux格式化扩展分区时会报错,因为Linux扩展分区格式化无意义,它是为logicalpartition服务的,它们大小一 样.在一块硬盘里你最多只能创造fourpartiton,包括主分区与ex ...
- partprobe分区报错
环境 centos 6.9 vmware 虚拟机 场景: 对磁盘进行在线扩容,扩容后,在线扫描,扫描过后进行LVM扩展,分区后,通过partprobe /dev/sda 扫描,出现以下错误: 分区报错 ...
- SAP MIGO对工单做101收货,报错 - Check table TFBEFU_CR entry 10 does not exist – 对策
SAP MIGO对工单做101收货,报错 - Check table TFBEFU_CR entry 10 does not exist – 对策 执行事务代码MIGO,移动类型101,对某工单执行入 ...
- Ambari删除服务报错之CSRF protection is turned on
Ambari安装组件失败后执行 curl 删除服务报错 CSRF protection is turned on X-Requested_By HTTP Header is required 解决方案 ...
- Javafx 报错Exception in Application start method java.lang.reflect.InvocationTargetException
Javafx 报错Exception in Application start method java.lang.reflect.InvocationTargetException 代码如下: imp ...
- Docker下删除镜像报错 (cannot be forced) - image has dependent child images
记录一次docker删除镜像报错: docker rmi 镜像Id 报错: Error response from daemon: conflict: unable to delete ae9561a ...
- javafx-更改webview中的html元素报错Exception in thread “JavaFX Application Thread“ netscape.javascript.JSExce
具体报错 Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: Synt ...
最新文章
- call_user_func_array 笔记
- linux导出路径path,Linux kernel 绝对路径之d_path篇【转】
- python多级字典_Python多层字典取值
- 天池 在线编程 推荐朋友(哈希)
- mysql yum多实例_mysql———基于yum源实现多实例
- python3无法安装rpi gpio咋办_如何将RPi.GPIO安装到windows
- STL容器:list双向链表学习
- python截取视频图像_python视频按帧截取图片工具
- 海康摄像头配置、国标平台接入、萤石云平台、局域网拉流方法
- 树莓派设置开机自启动程序
- 日期相关(类与方法)
- 程序员都需要学习什么
- creating output section “HRCap1RegsFile“ without a SECTIONS
- 猴子年华、教你如何关闭微信朋友圈广告
- 使用VNC远程连接云服务器,连接超时问题
- 互联网的组成_网络层
- [网络工程师]-路由协议-OSPF协议
- 网站故事营销:这个真心不能少
- HTML期末大作业~节日礼品购物商城网站html模板(HTML+CSS+JavaScript)
- 将两页A4 pdf文档合并到一页A4页面上打印的方法