system.replicas
包含本地服务器上所有复制表的相关信息和状态。 此表可用于监控。表中每个使用 Replicated* 引擎的表对应一行记录。
示例:
列:
database(String) - 数据库名称table(String) - 表名engine(String) - 表引擎名称is_leader(UInt8) - 该副本是否为 leader。 多个副本可以同时为 leader。可以通过在merge_tree设置中使用replicated_can_become_leader来阻止某个副本成为 leader。leader 负责调度后台合并。 请注意,只要副本可用并且在 ZK 中有会话,就可以对其执行写入操作,而不论其是否为 leader。can_become_leader(UInt8) - 该副本是否可以成为 leader。is_readonly(UInt8) - 该副本是否处于只读模式。 如果配置中没有 ClickHouse Keeper 相关的配置段,或者在 ClickHouse Keeper 中重新初始化会话时发生未知错误,或者在 ClickHouse Keeper 中会话正在重新初始化时,该模式会被启用。is_session_expired(UInt8) - 与 ClickHouse Keeper 的会话是否已过期。基本上与is_readonly含义相同。future_parts(UInt32) - 作为尚未完成的 INSERT 或合并操作结果将出现的数据分片数量。parts_to_check(UInt32) - 等待验证队列中的数据分片数量。如果怀疑某个分片可能已损坏,则会将其放入验证队列。zookeeper_path(String) - 在 ClickHouse Keeper 中的表数据路径。replica_name(String) - 在 ClickHouse Keeper 中的副本名称。同一张表的不同副本具有不同的名称。replica_path(String) - 在 ClickHouse Keeper 中的副本数据路径。等同于拼接得到的路径'zookeeper_path/replicas/replica_path'。columns_version(Int32) - 表结构的版本号。表示执行 ALTER 的次数。如果副本具有不同的版本,说明某些副本尚未完成所有 ALTER 操作。queue_size(UInt32) - 等待执行的操作队列大小。操作包括插入数据块、合并以及某些其他操作。通常该值与future_parts一致。inserts_in_queue(UInt32) - 需要执行的数据块插入数量。插入通常会被相当快速地复制。如果该值较大,则表示存在问题。merges_in_queue(UInt32) - 等待执行的合并数量。有时合并会很耗时,因此该值可能长时间大于零。part_mutations_in_queue(UInt32) - 等待执行的变更(mutation)数量。queue_oldest_time(DateTime) - 当queue_size大于 0 时,表示最早的操作被加入队列的时间。inserts_oldest_time(DateTime) - 参见queue_oldest_timemerges_oldest_time(DateTime) - 参见queue_oldest_timepart_mutations_oldest_time(DateTime) - 参见queue_oldest_time
接下来的 4 列只有在与 ZK 存在活动会话时才为非零值。
log_max_index(UInt64) - 全局活动日志中的最大条目编号。log_pointer(UInt64) - 副本已复制到其执行队列中的全局活动日志最大条目编号再加一。如果log_pointer远小于log_max_index,则说明存在问题。last_queue_update(DateTime) - 队列最后一次更新的时间。absolute_delay(UInt64) - 当前副本的滞后时长(秒)。total_replicas(UInt8) - 该表已知副本的总数量。active_replicas(UInt8) - 该表在 ClickHouse Keeper 中具有会话的副本数量(即正常工作的副本数量)。lost_part_count(UInt64) - 自建表以来所有副本在该表中丢失的数据分片总数。该值保存在 ClickHouse Keeper 中,只会增加。last_queue_update_exception(String) - 当队列中包含损坏条目时记录的最后异常消息。当 ClickHouse 在版本之间破坏向后兼容性,导致由新版本写入的日志条目无法被旧版本解析时,该字段尤其重要。zookeeper_exception(String) - 在从 ClickHouse Keeper 获取信息时发生错误时记录的最后异常消息。replica_is_active(Map(String, UInt8)) — 一个从副本名称到该副本是否处于活动状态的映射。
如果你查询所有列,访问该表的速度可能会稍微慢一些,因为每一行都需要从 ClickHouse Keeper 进行多次读取。 如果你不查询最后 4 列(log_max_index、log_pointer、total_replicas、active_replicas),访问该表会更快。
例如,你可以像下面这样检查一切是否正常工作:
如果此查询未返回任何结果,就表示一切正常。