执行语句删除某一天分区时出现错误,执行的删除语句如下:

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重启加载时很容易出现问题,所以生产环境下这种方式不推荐(有经验了之后我们可以提前就设置好配置文件)。
具体的步骤如下:

  1. 找到ClickHouse安装目录下的配置文件,通常是/etc/clickhouse-server/config.xml。
  2. 修改配置文件,改变可删除数据的大小限制为不限制。
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的限制,下一次执行删除后也会同时删除这个文件,所以我们用这种方式时每次删除数据都需要先执行这个命令,这种方式的好处是不用重启服务,所以生产环境我们推荐使用这种方式。
具体的步骤如下:

  1. 在CK数据存储目录下创建出“flags/force_drop_table”文件夹和文件,并设置权限。
sudo touch "/mnt/clickhousedata/flags/force_drop_table" && sudo chmod 666 "/mnt/clickhousedata/flags/force_drop_table"
  1. 执行删除语句。
clickhouse-client --user user --password 'xxx' -q "alter table od_event_xdr_follow drop partition '2021-5-18'"

这样就可以删除成功啦!

定时删除多少天之前分区的脚本

  1. 编写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
  1. 使用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:相关推荐

  1. HashMap遍历中删除元素报错

    文章目录 一.问题描述 二.问题分析 三.解决问题 四.相关问题 一.问题描述 HashMap在遍历的时候进行删除元素报错java.util.ConcurrentModificationExcepti ...

  2. php zpo框架,Yii使用DeleteAll连表删除出现报错问题的解决方法

    本文实例讲述了Yii使用DeleteAll连表删除出现报错问题的解决方法.分享给大家供大家参考,具体如下: 删除数据的时候,经常会遇到连联判断删除数据的条件,今天用Yii 的CDbCriteria生成 ...

  3. linux格式化扩展分区报错解决

    Linux格式化扩展分区时会报错,因为Linux扩展分区格式化无意义,它是为logicalpartition服务的,它们大小一 样.在一块硬盘里你最多只能创造fourpartiton,包括主分区与ex ...

  4. partprobe分区报错

    环境 centos 6.9 vmware 虚拟机 场景: 对磁盘进行在线扩容,扩容后,在线扫描,扫描过后进行LVM扩展,分区后,通过partprobe /dev/sda 扫描,出现以下错误: 分区报错 ...

  5. 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,对某工单执行入 ...

  6. Ambari删除服务报错之CSRF protection is turned on

    Ambari安装组件失败后执行 curl 删除服务报错 CSRF protection is turned on X-Requested_By HTTP Header is required 解决方案 ...

  7. Javafx 报错Exception in Application start method java.lang.reflect.InvocationTargetException

    Javafx 报错Exception in Application start method java.lang.reflect.InvocationTargetException 代码如下: imp ...

  8. Docker下删除镜像报错 (cannot be forced) - image has dependent child images

    记录一次docker删除镜像报错: docker rmi 镜像Id 报错: Error response from daemon: conflict: unable to delete ae9561a ...

  9. javafx-更改webview中的html元素报错Exception in thread “JavaFX Application Thread“ netscape.javascript.JSExce

    具体报错 Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: Synt ...

最新文章

  1. call_user_func_array 笔记
  2. linux导出路径path,Linux kernel 绝对路径之d_path篇【转】
  3. python多级字典_Python多层字典取值
  4. 天池 在线编程 推荐朋友(哈希)
  5. mysql yum多实例_mysql———基于yum源实现多实例
  6. python3无法安装rpi gpio咋办_如何将RPi.GPIO安装到windows
  7. STL容器:list双向链表学习
  8. python截取视频图像_python视频按帧截取图片工具
  9. 海康摄像头配置、国标平台接入、萤石云平台、局域网拉流方法
  10. 树莓派设置开机自启动程序
  11. 日期相关(类与方法)
  12. 程序员都需要学习什么
  13. creating output section “HRCap1RegsFile“ without a SECTIONS
  14. 猴子年华、教你如何关闭微信朋友圈广告
  15. 使用VNC远程连接云服务器,连接超时问题
  16. 互联网的组成_网络层
  17. [网络工程师]-路由协议-OSPF协议
  18. 网站故事营销:这个真心不能少
  19. HTML期末大作业~节日礼品购物商城网站html模板(HTML+CSS+JavaScript)
  20. 将两页A4 pdf文档合并到一页A4页面上打印的方法

热门文章

  1. 全球汽贸网汽车资讯:芯片相关的减产速度有所放缓
  2. 淘宝网UED官方博客
  3. linux print不换行符,awk print 分隔符_awk print 不换行_awk print『』
  4. ROG冰川散热架构 如何让游戏本释放猛兽性能?
  5. Lenovo ThinkVantage Toolbox 常见问题解答
  6. 多米诺骨牌效应,量子计算机大规模扩展的新途径
  7. 关于CommandTimeOut 【转】
  8. 温度湿度传感器用法笔记
  9. 2.3将英尺转化为米数.py
  10. java cardlayout性能_java中的CardLayout的运用