ClickHouse - High Availability
ClickHouse の database で High Availability を有効にしても、データが自動的に replicate されるわけではありません。replication は選んだ table engine に依存し、この点が初めて使う人のほとんどを驚かせます。
ClickHouse の database で High Availability を有効にすると何が起きますか
サービスが shard ごとに replica を自動的に作成します。ただし replication が実際に働くのは、replicated table engine で作成したテーブルだけです。
replication が対応するのは MergeTree ファミリのみです。
- ReplicatedMergeTree
- ReplicatedSummingMergeTree
- ReplicatedReplacingMergeTree
- ReplicatedAggregatingMergeTree
- ReplicatedCollapsingMergeTree
- ReplicatedVersionedCollapsingMergeTree
- ReplicatedGraphiteMergeTree
ClickHouse のドキュメントの Replicated table engines を参照してください。
replication はサーバー単位ですか、テーブル単位ですか
テーブル単位です。replicated なテーブルと そうでないテーブルが同じサーバー上に共存できるため、replicate されないテーブルが 1 つあっても他には影響しません。
replication は sharding に依存しますか
いいえ。replication は sharding とは独立しており、各 shard がそれぞれ replicate されます。
ここが、予期せずデータを失う最も多い箇所です。ReplicatedMergeTree ではなく MergeTree で作成したテーブルは、database で HA が有効でも replicate されません。そのデータは書き込みを受けた node にのみ存在します。
警告
HA を有効にしても MergeTree テーブルは保護されません。database の設定だけでなく、依存しているすべてのテーブルの engine を確認してください。