版本升级,新功能Mutations (表delete操作),未执行
发布于 3 个月前 作者 KennCai 619 次浏览 来自 实战经验

官档说1.1.54388版本以后可以使用delete操作了,今天测试了下,遇到了几个问题: 因为我是分布式集群部署方式,所以直接使用 alter table a_all delete where id=’‘格式语句进行删除,提示Mutations 是不支持分布式表的。o(╥﹏╥)o 没办法只能从本地表试试了,alter table a_local delete where id=’’,可以执行成功, 在system.mutations表中查到了这条删除记录,但是等了好久一直是is_done=0,parts_to_do =7; 不清楚为什么没有执行这个操作,请大神来指导下。

2 回复

用docker重新run了个新版本的单节点,delete可以生效,但是老版本升级还是不生效, 猜想是有什么新的配置项没有生效,因为配置是沿用的老版本的,正在查找该配置项

结贴。 历时1天终于找到了问题所在,权限!!! 我是从1.1.54310直接升到18.10.3版本的,docker部署。一开始没找到问题所在,所以把config文件也替换成了最新的,但是比对过差异后其实你会发现变化不大,果然这种方法没有解决我的问题。通过查看日志,定位问题出在下面: untitled1.png 一开始很不理解为什么会报这个错,仔细考虑了下这个删除逻辑,应该是先clone不需要删除的文件–>drop无用的数据–>重建文件及索引信息(注:没有仔细看过源码,仅个人想法,有不对的请指正),这样一想在tmp_clone_*这个文件夹肯定是需要增删及修改里面的内容的,所以我就想到是不是权限的问题呢? 用root进入容器查看发现/var/ilb/clickhouse/目录下的读写权限没有问题,但是有几个文件夹的归属组和用户不一样,105 106和clickhouse clickhouse两种, 前一种是1.1.54310版本的文件,后一种是新版本之后产生的文件,ps -aux 查看发现程序是用clickhouse用户启动的;遂把文件的用户、组统一改为clickhouse,然后把日志中报错提到的文件都删除掉,再查询system.mutations表发现删除已经生效。 untitled2.png 经验: 1、老版本和新版本的clickhouse用docker启动时候的用户策略可能不太一样,造成了该升级问题。(也可能是我配置有误?确认启动命令前后是一致的,有兴趣的同学可以研究下); 2、高可用集群中,主从节点都需要做删除动作,不会自动同步。

给其他需要升版本的同学贡献一点经验,少踩点坑,有兴趣的同学可以多多交流。

回到顶部