このページでは、ClickHouse Cloud の災害復旧に関する推奨事項と、障害発生時にお客様が復旧するためのガイダンスを説明します。
現在、ClickHouse Cloud は自動フェイルオーバーおよび複数の地理的リージョン間での自動同期をサポートしていません。
お客様は、サービスの規模や構成に応じた具体的な RTO を把握するため、定期的にバックアップからの復元テストを実施する必要があります。
まず、いくつかの用語を確認しておくと役立ちます。
RPO (Recovery Point Objective): 障害発生後に許容される、時間で表した最大のデータ損失量です。例: RPO が 30 分の場合、障害発生時に DB は 30 分以内の時点のデータまで復元できる必要があります。これは当然、バックアップをどのくらいの頻度で取得するかに依存します。
RTO (Recovery Time Objective): 障害発生後、通常運用を再開しなければならないまでに許容される最大停止時間です。例: RTO が 30 分の場合、障害発生時にチームは 30 分以内にデータとアプリケーションを復元し、通常運用を再開できることを意味します。
Database Backups and Snapshots: バックアップは、データの別個のコピーを保持することで、耐久性の高い長期保存を実現します。スナップショットはデータの追加コピーを作成せず、通常はより高速で、より優れた RPO を実現します。
プライマリサービスのバックアップを保持しておくことで、プライマリサービスでダウンタイムが発生した場合に、そのバックアップを使って復元できます。
ClickHouse Cloud は、バックアップについて以下の機能をサポートしています。
- デフォルトのバックアップ
デフォルトでは、ClickHouse Cloud は 24 時間ごとにサービスのバックアップを取得します。
これらのバックアップはサービスと同じリージョンに保存され、ClickHouse CSP (cloud service provider) のストレージバケット内で作成されます。
プライマリサービス内のデータが破損した場合は、そのバックアップを使用して新しいサービスに復元できます。
- 外部バックアップ (お客様自身のストレージバケット内)
同じリージョン内または別のリージョンにある、お客様のアカウント内のオブジェクトストレージへバックアップをエクスポートできます。
クラウドをまたぐバックアップエクスポートのサポートは近日提供予定です。
リージョン間バックアップおよびクラウド間バックアップには、該当するデータ転送料金が適用されます。
この機能は現在、PCI/HIPAA サービスでは利用できません
- 設定可能なバックアップ
お客様は、RPO を改善するために、バックアップを設定して、最短で 6 時間ごとに実行されるようにできます。
また、保持期間をより長く設定することもできます。
現在サービスで利用可能なバックアップは、ClickHouse Cloud コンソールの「backups」ページに一覧表示されます。
このセクションでは、各バックアップの成功 / 失敗ステータスも確認できます。
- ClickHouse Cloud の バケット 内にあるデフォルトバックアップは、同じリージョン内の新しいサービスに復元できます。
- 外部バックアップ (顧客の オブジェクトストレージ 内) は、同じリージョンまたは別のリージョンの新しいサービスに復元できます。
バックアップと復元にかかる時間は、データベースのサイズに加え、スキーマやデータベース内のテーブル数など、複数の要因によって異なります。
弊社のテストでは、比較的小さいバックアップ (約 1 TB) でも、完了までに 10〜15 分以上かかる場合があることを確認しています。
20 TB 未満のバックアップは通常 1 時間以内に完了し、約 50 TB のデータのバックアップには 2〜3 時間かかる見込みです。
バックアップはサイズが大きいほどスケールメリットがあり、一部の社内サービスでは最大 1 PB のバックアップが 10 時間未満で完了した例も確認しています。
実際の所要時間は上記のとおり複数の要因に左右されるため、より正確な見積もりを得るには、ご自身のデータベースまたはサンプルデータでテストすることを推奨します。
復元にかかる時間は、同程度のサイズであればバックアップにかかる時間とおおむね同じです。
前述のとおり、バックアップの復元にどの程度時間がかかるかを把握するため、ご自身のデータベースでテストすることを推奨します。
現在、同一リージョン内か異なるリージョン間かを問わず、2 つの ClickHouse Cloud インスタンス間での自動フェイルオーバーはサポートされていません。
現在、同一リージョン内か異なるリージョン間かを問わず、異なる ClickHouse Cloud サービス間でのデータの自動同期はありません。つまり、Active-Active レプリケーションはサポートされていません。
このセクションでは、各ケースで利用できるさまざまな復旧オプションと、その手順について説明します。
この場合、データはバックアップから同一リージョン内の別のサービスに復元できます。
デフォルトのバックアップポリシーを使用している場合、バックアップは最大24時間前のものになる可能性があります。6時間間隔の設定可能なバックアップを使用している場合は、最大6時間前のものになる可能性があります。
既存のバックアップから復元するには、次の手順に従います。
- ClickHouse Cloud コンソールの「Backups」セクションに移動します。
- 復元元にするバックアップの「Actions」にある三点メニューをクリックします。
- 新しいサービスに名前を付け、このバックアップから復元します
バックアップをエクスポートして、ご利用のクラウドプロバイダーのバケットに保存できます。
リージョン障害が懸念される場合は、別のリージョンにバックアップをエクスポートすることを推奨します。
リージョン間データ転送の料金が発生する点にご注意ください。
プライマリリージョンがダウンした場合、別のリージョンにあるバックアップを、そのリージョンの新しいサービスに復元できます。
バックアップを別のサービスに復元したら、DNS、ロードバランサー、接続文字列の設定が新しいサービスを参照するよう更新する必要があります。
これには、次の作業が含まれる場合があります。
- 環境変数またはシークレットの更新
- 新しい接続を確立するためのアプリケーションサービスの再起動
検討できる追加オプションがいくつかあります。
- 別個のクラスターへのデュアルライト
このオプションでは、異なるリージョンに 2 つの別個のクラスターを構成し、両方にデュアルライトできます。
複数のサービスを運用することになるためコストは高くなりますが、1 つのリージョンが利用不能になった場合でも、より高い可用性を確保できます。
- CSP のレプリケーションを利用する
このオプションでは、クラウドサービスプロバイダーのネイティブのオブジェクトストレージ レプリケーション機能を利用してデータを複製します。
たとえば BYOB では、プライマリリージョンで自分が所有するバケットにバックアップをエクスポートし、AWS cross region replication を使ってそれを別のリージョンに複製できます。