Cassandra バックアップの概要

Apigee ハイブリッドのバックアップと復元機能を使用すると、ハイブリッド データのバックアップを作成できます。また、障害が発生した場合は、以前の作業スナップショットにデータを復元できます。バックアップの可用性と保持は、ユーザーが指定するバックアップ インフラストラクチャに基づきます。

Apigee ハイブリッドの一般的なインストールは、次のコンポーネントで構成されています。

  • MART(管理サービス)
  • コントローラと Watcher(Kubernetes オブジェクトを管理)
  • Istio(Ingress を管理)
  • ランタイム、同期、UDCA(環境ごとに 1 つ)
  • テレメトリー(モニタリングとロギング)
  • 証明書マネージャー(証明書を管理)
  • データストア(Cassandra データベースと Redis データベース)

Cassandra を除くすべてのコンポーネントはステートレスであり、データは保持されません。これらのコンポーネントには、バックアップと復元は必要ありません。復元中は、既存のオーバーライドを使用してこれらのコンポーネントを再インストールするだけで十分です。

Cassandra のバックアップを取る理由

バックアップは、障害シナリオから保護するための重要な手段です。各バックアップは、バックアップ作成時点に存在する Cassandra データの整合性スナップショットとして機能します。このスナップショットには、Cassandra データに加えて、Cassandra クラスタ内のスキーマとメタデータが含まれています。障害が発生した場合は、バックアップを使用してハイブリッド インスタンスを以前の運用状態に復元できます。ハイブリッド インスタンスのサイズに応じて、1 つのバックアップ セットに 1 つ以上のバックアップ ファイルが含まれることがあります。

Cassandra のバックアップについて知っておくべきこと

Cassandra はレプリケートされるデータベースであり、各リージョンまたはデータセンターに 3 つ以上のデータのコピーが存在するように構成されています。Cassandra はストリーミング レプリケーションと読み取り修復を使用して、各リージョンまたはデータセンターに任意の時点のデータレプリカを保持します。

ハイブリッドでは、Cassandra のバックアップはデフォルトで無効になっています。致命的な障害でデータが失われた場合に備えて、Cassandra のバックアップを有効にしておくことをおすすめします。Cassandra のバックアップは障害復旧の場合に使用するためのものであり、誤って削除したことによるデータ損失を復元するためのものではありません。

バックアップは、overrides.yaml ファイルに設定されているスケジュールに従って作成されます。バックアップ スケジュールをハイブリッド クラスタに適用すると、そのスケジュールに従って Kubernetes バックアップ ジョブが実行されます。このジョブはハイブリッド クラスタ内の各 Cassandra ノードでバックアップ スクリプトをトリガーし、ノード上のすべてのデータを収集し、データのアーカイブ ファイルを作成して Cloud Storage またはリモート サーバー上のディレクトリに送信します。

バックアップの対象

ハイブリッドのスケジュール バックアップでは、バックアップ時に Apigee の Cassandra に保存されている永続的なランタイム データの完全なバックアップを取ります。バックアップ時刻より後のデータ変更は、バックアップでは復元できません。スケジュール バックアップは、次のエンティティで構成されます。

  • ユーザー スキーマを含む Cassandra スキーマ(Apigee キースペースの定義)
  • クラスタ内の Cassandra ノードあたりの Cassandra パーティション トークン情報。
  • Cassandra データのスナップショット。

バックアップ データの保存場所

バックアップ データの保存場所は、バックアップ方法によって異なります。Apigee ハイブリッドでは、次のバックアップ方法がサポートされています。

  • Cloud Storage へのバックアップ: Google Cloud プロジェクト内の構成済みの Cloud Storage バケットにバックアップが保存されます。
  • リモート サーバーへのバックアップ: ユーザーが指定したリモート サーバー上のディレクトリにバックアップが保存されます。

データの保護方法

バックアップに Cloud Storage を使用する場合、バックアップ データはデフォルトで暗号化されます。Cloud Storage にバックアップしない場合、バックアップ データはリモート サーバーへの転送中に暗号化されます。ただし、転送後に、バックアップ データがリモート サーバーで暗号化されていることを確認する必要があります。

バックアップを取る方法

バックアップは cron ジョブとしてスケジュールする必要があります。cron ジョブは、ユーザーが構成した overrides.yaml ファイルから構成を読み取ります。Apigee では、復元プロセス中に再利用できるように overrides.yaml ファイルのコピーを作成することをおすすめします。

以降のセクションでは、Cloud Storage とリモート サーバーへのバックアップのスケジュールを設定する方法について詳しく説明します。