本文均为公司实际线上业务遇到的问题,视遇到问题的情况持续更新

启动报错 broken parts to remove

<Error> Application: DB::Exception: Suspiciously many (346) broken parts to remove.: Cannot attach table * from metadata file

通常是服务器意外重启(例如断电)导致的文件损坏导致,通过调整max_suspicious_broken_parts的值来强制启动。

扩展阅读:max_suspicious_broken_parts

注意:对于线上重要数据得有个机制补丢弃的损坏数据

vim /etc/clickhouse-server/config.xml

修改,默认值为10

<merge_tree>
    <max_suspicious_broken_parts>5000</max_suspicious_broken_parts>
</merge_tree>

对于参数的解释:如果单个分区中的损坏部分数量超过max_suspicious_broken_parts 配置的值,clickhouse会拒绝自动修复或者拒绝删除损坏部分的数据,并且服务启动时候直接报错退出。

执行sql报错 Max query size exceeded

执行sql报错:Max query size exceeded 原因:执行的sql语句超过最大长度,可以通过调整max_query_size值来解决。查看当前设置值的大小(单位为bytes,默认值262144即256KB):

select * from system.settings where name like '%max_query_size%'
name    value   changed description
max_query_size  262144  1   "Which part of the query can be read into RAM for parsing (the remaining data for INSERT, if any, is read later)"

修改配置,在标签里面可以对每个用户设定该值:

vim /etc/clickhouse-server/users.xml

例如,修改为2097152,即2MB:

    <profiles>
        <default>
            <max_memory_usage>10000000000</max_memory_usage>
            <load_balancing>random</load_balancing>
            <max_query_size>2097152</max_query_size>
        </default>
        <!-- Profile that allows only read queries. -->
        <readonly>
            <readonly>1</readonly>
            <max_query_size>2097152</max_query_size>
        </readonly>
    </profiles>

扩展阅读:max_query_size

注意:修改配置后无需重启clickhouse,等待一段时间重新连接clickhouse自动热更配置即可,无需停线上服务

如果您觉得您在我这里学到了新姿势,博主支持转载,姿势本身就是用来相互学习的。同时,本站文章如未注明均为 hisune 原创 请尊重劳动成果 转载请注明 转自: clickhouse报错相关解决办法,持续更新 - hisune.com