1、Clickhouse Too many partitions for single INSERT block (more than xxx) 解决方法
Too many partitions for single INSERT block (more than 100)
The limit is controlled by 'max_partitions_per_insert_block' setting.
Large number of partitions is a common misconception.
原因:
clickhouse 要求每次写入的数据不能跨越特别多的 partitions,具体受参数 max_partitions_per_insert_block 控制,调整该参数即可。
解决方法:修改配置文件/etc/clickhouse-server/users.xml
,加入如下配置
<max_partitions_per_insert_block>5000</max_partitions_per_insert_block>
2、clickhouse启动异常clickhouse Suspiciously many (367 parts, 0.00 B in total) broken parts to remove........
最近经常碰到同一个问题, 部署的clickhouse服务时常启动异常, 推测是因为clickhouse在设备突然断电时一些数据持久化服务或者数据压缩服务未完全同步, 导致启动后加载过程中, 产生了异常数据碎片无法合并导致的。
这里先说下, 大家部署服务的时候, 切记要把里面的比如日志、配置文件等映射出来到宿主机, 不然改起来很麻烦, 特别是关键数据如果不映射, 到时候容器毁坏了, 数据就全丢了。映射的方法有两个, docker run -v或者在docker-compose.yml中添加volumes都可以。如果忘记映射, 可以使用docker cp container-name:path local-path的方法进行文件或者文件夹的复制, 然后再反过来cp回去就可以。
如果有映射日志, 可以直接查看日志文件, 如果没有映射, 可以通过上述方法cp日志文件出来查看(因为容器挂掉, 没办法直接进去看, 而且docker logs打印的不是clickhouse-server的日志), 如果看到Suspiciously many broken parts to remove的字样, 说明问题就出在这里了。
然后再说下上述问题解决办法, 可以在clickhouse的配置文件的conf.d中(前提时config.yml中include了conf.d文件夹)添加一个配置文件, 命名应该可以随意,但大众一般都采用语义性强的max_suspicious_broken_parts.xml作为配置区分, 其中内容如下:
<?xml version="1.0"?>
<yandex>
<merge_tree>
<max_suspicious_broken_parts>1000</max_suspicious_broken_parts>
</merge_tree>
</yandex>
在config.xml中添加下面这一行,意思是使上面创建的max_suspicious_broken_parts.xml生效
<include_from>/etc/clickhouse-server/conf.d/max_suspicious_broken_parts.xml</include_from>
参考:https://blog.51cto.com/u_15368762/3901932
添加完成后, 再重启clickhouse服务, 即可恢复正常。