メインコンテンツまでスキップ

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 を確認してください。

次のステップ