ClickHouse 副本不同步
Posted
技术标签:
【中文标题】ClickHouse 副本不同步【英文标题】:ClickHouse replica out of sync 【发布时间】:2020-06-20 18:03:01 【问题描述】:我有一个由 3 个 ClickHouse 服务器组成的集群,其中有一个使用 ReplicatedMergeTree 的表。其中两台服务器不同步,“system.replication_queue”中的队列数不断增加。我可以在日志中看到这个错误。
Not executing log entry for part e87a3a2d13950a90846a513f435c2560_2428139_2436934_22 because source parts size (470.12 MiB) is greater than the current maximum (4.45 MiB).
如何增加源零件尺寸?我在设置中找不到它。
更新:
我阅读了源代码,它是根据可用资源自动计算的。我也收到了这条消息
Not executing log entry for part de77ce6a2937ce543cd003eb289fdb7e_8097652_8107495_1904 because another log entry for the same part is being processed. This shouldn't happen often.
在日志中收到上述消息的服务器具有较高的 CPU 使用率和插入延迟。
一旦我停止插入,复制队列就会被清除。
【问题讨论】:
看看这个github CH issue #10506 文章表明问题是“合并的处理速度明显慢于插入”,但我没有在日志中看到该错误。我每秒只发送一个添加请求。 【参考方案1】:我找到了解决方案。发生这种情况是因为@vladimir 建议的“合并处理速度明显慢于插入”
我是在大批量插入数据,但这并不意味着 clickhouse 也会将数据存储在大文件中。 Clickhouse 存储数据基于
number of partitions * number of columns * (times 2 for every nullable column)
因此,即使对于单个大批量插入,也会创建多个文件。我通过删除分区键来减少分区数量解决了这个问题,从而减少了正在创建的文件数量。
【讨论】:
你怎么知道这个?你有什么办法可以判断是不是这种情况?日志中有任何内容吗?我在不到两个月的数据中看到每日分区数据中存在相当大的不匹配行为。在一个小表中,如果一个副本有 7000 个条目,另一个副本大约有 6000 个。看起来太多了。以上是关于ClickHouse 副本不同步的主要内容,如果未能解决你的问题,请参考以下文章
在 Zookeeper 集群中重新添加丢失的 Clickhouse 副本
如果一个 ClickHouse 副本宕机,操作日志在 ZooKeeper 中可以保存多长时间?