如果一个 ClickHouse 副本宕机,操作日志在 ZooKeeper 中可以保存多长时间?
Posted
技术标签:
【中文标题】如果一个 ClickHouse 副本宕机,操作日志在 ZooKeeper 中可以保存多长时间?【英文标题】:If one ClickHouse replica is down, how long operation log can keep in ZooKeeper? 【发布时间】:2021-09-03 02:09:05 【问题描述】:据我了解,在ClickHouse ReplicatedMergeTree中,insert操作会在ZK“/log”中写入log,其他replica pull log,执行任务和同步日期。
我的问题是当一个副本不可用(机器停机或 clickhouse 实例停机)时,该副本无法提取日志和同步数据。如果其他副本仍然插入数据并将日志推送到 ZK。操作日志会在 ZK 中保留多长时间?有有效期吗?也许ZK不会永远保留这些日志,有确切的保留时间吗?
如果ZK中的insert log被移除,之前不可用的replica又正常了,这个replica如何与其他replica同步数据?
感谢您的任何回答或讨论,谢谢。
【问题讨论】:
【参考方案1】:SELECT *
FROM system.merge_tree_settings
WHERE name LIKE '%replicated_logs%'
FORMAT Vertical
Query id: 534466cf-1624-4ca0-b559-bc8c381ff547
Row 1:
──────
name: max_replicated_logs_to_keep
value: 1000
changed: 0
description: How many records may be in log, if there is inactive replica. Inactive replica becomes lost when when this number exceed.
type: UInt64
Row 2:
──────
name: min_replicated_logs_to_keep
value: 10
changed: 0
description: Keep about this number of last records in ZooKeeper log, even if they are obsolete. It doesn't affect work of tables: used only to diagnose ZooKeeper log before cleaning.
type: UInt64
max_replicated_logs_to_keep 现在是 1000。 在过去,这个默认值一直在变化,它是 10000, 100, 1000 :)。
如果复制日志被“旋转”(副本延迟>1000),这根本不是问题,陈旧的副本会启动一个特殊的引导程序,它根本不使用日志,但它会同步它的元数据和带有其他副本的零件列表,此过程比滚动日志稍长。
【讨论】:
非常感谢,这对我很有帮助,我现在清楚了。以上是关于如果一个 ClickHouse 副本宕机,操作日志在 ZooKeeper 中可以保存多长时间?的主要内容,如果未能解决你的问题,请参考以下文章
ClickHouse 副本协同原理:ReplicatedMergeTree引擎