Help wanted!

The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.

Help ClickHouse documentation by editing this page

系统。副本

包含驻留在本地服务器上的复制表的信息和状态。
此表可用于监视。 该表对于每个已复制的*表都包含一行。

示例:

  1. SELECT *
  2. FROM system.replicas
  3. WHERE table = 'visits'
  4. FORMAT Vertical
  1. Row 1:
  2. ──────
  3. database: merge
  4. table: visits
  5. engine: ReplicatedCollapsingMergeTree
  6. is_leader: 1
  7. can_become_leader: 1
  8. is_readonly: 0
  9. is_session_expired: 0
  10. future_parts: 1
  11. parts_to_check: 0
  12. zookeeper_path: /clickhouse/tables/01-06/visits
  13. replica_name: example01-06-1.yandex.ru
  14. replica_path: /clickhouse/tables/01-06/visits/replicas/example01-06-1.yandex.ru
  15. columns_version: 9
  16. queue_size: 1
  17. inserts_in_queue: 0
  18. merges_in_queue: 1
  19. part_mutations_in_queue: 0
  20. queue_oldest_time: 2020-02-20 08:34:30
  21. inserts_oldest_time: 1970-01-01 00:00:00
  22. merges_oldest_time: 2020-02-20 08:34:30
  23. part_mutations_oldest_time: 1970-01-01 00:00:00
  24. oldest_part_to_get:
  25. oldest_part_to_merge_to: 20200220_20284_20840_7
  26. oldest_part_to_mutate_to:
  27. log_max_index: 596273
  28. log_pointer: 596274
  29. last_queue_update: 2020-02-20 08:34:32
  30. absolute_delay: 0
  31. total_replicas: 2
  32. active_replicas: 2

列:

  • database (String)-数据库名称
  • table (String)-表名
  • engine (String)-表引擎名称
  • is_leader (UInt8)-副本是否是领导者。
    一次只有一个副本可以成为领导者。 领导者负责选择要执行的后台合并。
    请注意,可以对任何可用且在ZK中具有会话的副本执行写操作,而不管该副本是否为leader。
  • can_become_leader (UInt8)-副本是否可以当选为领导者。
  • is_readonly (UInt8)-副本是否处于只读模式。
    如果配置没有ZooKeeper的部分,如果在ZooKeeper中重新初始化会话时发生未知错误,以及在ZooKeeper中重新初始化会话时发生未知错误,则此模式将打开。
  • is_session_expired (UInt8)-与ZooKeeper的会话已经过期。 基本上一样 is_readonly.
  • future_parts (UInt32)-由于尚未完成的插入或合并而显示的数据部分的数量。
  • parts_to_check (UInt32)-队列中用于验证的数据部分的数量。 如果怀疑零件可能已损坏,则将其放入验证队列。
  • zookeeper_path (String)-在ZooKeeper中的表数据路径。
  • replica_name (String)-在动物园管理员副本名称. 同一表的不同副本具有不同的名称。
  • replica_path (String)-在ZooKeeper中的副本数据的路径。 与连接相同 ‘zookeeper_path/replicas/replica_path’.
  • columns_version (Int32)-表结构的版本号。 指示执行ALTER的次数。 如果副本有不同的版本,这意味着一些副本还没有做出所有的改变。
  • queue_size (UInt32)-等待执行的操作的队列大小。 操作包括插入数据块、合并和某些其他操作。 它通常与 future_parts.
  • inserts_in_queue (UInt32)-需要插入数据块的数量。 插入通常复制得相当快。 如果这个数字很大,这意味着有什么不对劲。
  • merges_in_queue (UInt32)-等待进行合并的数量。 有时合并时间很长,因此此值可能长时间大于零。
  • part_mutations_in_queue (UInt32)-等待进行的突变的数量。
  • queue_oldest_time (DateTime)-如果 queue_size 大于0,显示何时将最旧的操作添加到队列中。
  • inserts_oldest_time (DateTime)-看 queue_oldest_time
  • merges_oldest_time (DateTime)-看 queue_oldest_time
  • part_mutations_oldest_time (DateTime)-看 queue_oldest_time

接下来的4列只有在有ZK活动会话的情况下才具有非零值。

  • log_max_index (UInt64)-一般活动日志中的最大条目数。
  • log_pointer (UInt64)-副本复制到其执行队列的常规活动日志中的最大条目数加一。 如果 log_pointerlog_max_index,有点不对劲。
  • last_queue_update (DateTime)-上次更新队列时。
  • absolute_delay (UInt64)-当前副本有多大滞后秒。
  • total_replicas (UInt8)-此表的已知副本总数。
  • active_replicas (UInt8)-在ZooKeeper中具有会话的此表的副本的数量(即正常运行的副本的数量)。

如果您请求所有列,表可能会工作得有点慢,因为每行都会从ZooKeeper进行几次读取。
如果您没有请求最后4列(log_max_index,log_pointer,total_replicas,active_replicas),表工作得很快。

例如,您可以检查一切是否正常工作,如下所示:

  1. SELECT
  2. database,
  3. table,
  4. is_leader,
  5. is_readonly,
  6. is_session_expired,
  7. future_parts,
  8. parts_to_check,
  9. columns_version,
  10. queue_size,
  11. inserts_in_queue,
  12. merges_in_queue,
  13. log_max_index,
  14. log_pointer,
  15. total_replicas,
  16. active_replicas
  17. FROM system.replicas
  18. WHERE
  19. is_readonly
  20. OR is_session_expired
  21. OR future_parts > 20
  22. OR parts_to_check > 10
  23. OR queue_size > 20
  24. OR inserts_in_queue > 10
  25. OR log_max_index - log_pointer > 10
  26. OR total_replicas < 2
  27. OR active_replicas < total_replicas

如果这个查询没有返回任何东西,这意味着一切都很好。