replicas
このテーブルには、ローカルサーバーにあるレプリケーションされたテーブルの情報とステータスが含まれています。このテーブルは監視に利用できます。テーブルにはすべてのReplicated*テーブルについて行が含まれています。
例:
SELECT *
FROM system.replicas
WHERE table = 'test_table'
FORMAT Vertical
クエリID: dc6dcbcb-dc28-4df9-ae27-4354f5b3b13e
行1:
───────
database: db
table: test_table
engine: ReplicatedMergeTree
is_leader: 1
can_become_leader: 1
is_readonly: 0
is_session_expired: 0
future_parts: 0
parts_to_check: 0
zookeeper_path: /test/test_table
replica_name: r1
replica_path: /test/test_table/replicas/r1
columns_version: -1
queue_size: 27
inserts_in_queue: 27
merges_in_queue: 0
part_mutations_in_queue: 0
queue_oldest_time: 2021-10-12 14:48:48
inserts_oldest_time: 2021-10-12 14:48:48
merges_oldest_time: 1970-01-01 03:00:00
part_mutations_oldest_time: 1970-01-01 03:00:00
oldest_part_to_get: 1_17_17_0
oldest_part_to_merge_to:
oldest_part_to_mutate_to:
log_max_index: 206
log_pointer: 207
last_queue_update: 2021-10-12 14:50:08
absolute_delay: 99
total_replicas: 5
active_replicas: 5
lost_part_count: 0
last_queue_update_exception:
zookeeper_exception:
replica_is_active: {'r1':1,'r2':1}
カラム:
database(String) - データベース名table(String) - テーブル名engine(String) - テーブルエンジン名is_leader(UInt8) - レプリカがリーダーかどうか。 複数のレプリカが同時にリーダーになることができます。レプリカがリーダーになるのを防ぐためにmerge_tree設定replicated_can_become_leaderを使用できます。リーダーはバックグラウンドでのマージをスケジュールする責任を持ちます。 Zookeeperにセッションを持ち利用可能である限り、リーダーであるかどうかに関わらず、任意のレプリカに書き込みができます。can_become_leader(UInt8) - レプリカがリーダーになれるかどうか。is_readonly(UInt8) - レプリカが読み取り専用モードかどうか。 このモードは、ClickHouse Keeperのセクションが設定に存在しない場合、セッションをClickHouse Keeperで再初期化する際に未知のエラーが発生した場合、またはClickHouse Keeperでセッションを再初期化する際に有効になります。is_session_expired(UInt8) - ClickHouse Keeperとのセッションが期限切れになったかどうか。基本的にはis_readonlyと同じです。future_parts(UInt32) - 挿入や未完了のマージの結果として現れるデータパーツの数。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) - 実行待ちの変異の数。queue_oldest_time(DateTime) -queue_sizeがゼロを超える場合、最も古い操作がキューに追加された時刻を示します。inserts_oldest_time(DateTime) -queue_oldest_timeを参照merges_oldest_time(DateTime) -queue_oldest_timeを参照part_mutations_oldest_time(DateTime) -queue_oldest_timeを参照
次の4つのカラムは、Zookeeperとのアクティブなセッションがある場合にのみ非ゼロの値を持ちます。
log_max_index(UInt64) - 一般活動のログにおける最大のエントリ番号。log_pointer(UInt64) - レプリカが実行キューにコピーした一般活動のログの最大エントリ番号に1を加えたもの。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)をリクエストしなければ、テーブルは速く動作します。
例えば、すべてが正常に動作しているかを次のようにチェックできます:
SELECT
database,
table,
is_leader,
is_readonly,
is_session_expired,
future_parts,
parts_to_check,
columns_version,
queue_size,
inserts_in_queue,
merges_in_queue,
log_max_index,
log_pointer,
total_replicas,
active_replicas
FROM system.replicas
WHERE
is_readonly
OR is_session_expired
OR future_parts > 20
OR parts_to_check > 10
OR queue_size > 20
OR inserts_in_queue > 10
OR log_max_index - log_pointer > 10
OR total_replicas < 2
OR active_replicas < total_replicas
このクエリが何も返さなければ、すべてが正常です。