Azure Cosmos DB の定期的なバックアップと復元
適用対象: NoSQL
MongoDB
Cassandra
Gremlin
Table
Azure Cosmos DB では、データのバックアップが一定の間隔で自動的に取得されます。 自動バックアップは、データベース操作のパフォーマンスや可用性に影響を与えずに取得されます。 すべてのバックアップは別々のストレージ サービス内に個別に保存されます。これらのバックアップは、リージョンの障害からの回復性を確保するためにグローバルにレプリケートされます。 Azure Cosmos DB では、データだけでなく、データのバックアップについても、冗長性とリージョンの障害からの回復性が高められています。
Azure Cosmos DB でデータをバックアップする方法
以下の手順は、Azure Cosmos DB によるデータのバックアップ方法を示しています。
Azure Cosmos DB によって、データベースが 4 時間ごとと任意の時点で自動的に完全バックアップされ、既定では最新の 2 回分のバックアップのみが保存されます。 既定の間隔がワークロードにとって十分でない場合は、Azure portal からバックアップ間隔と保有期間を変更できます。 バックアップ構成は、Azure Cosmos DB アカウントの作成時または作成後に変更できます。 コンテナーまたはデータベースが削除された場合、Azure Cosmos DB は、特定のプロビジョニング スループット コンテナーまたは共有スループット データベースの既存のスナップショットを 30 日間保持します。 スループットがデータベース レベルでプロビジョニングされている場合、バックアップと復元のプロセスはデータベース スコープ全体で行われます。
Azure Cosmos DB では、これらのバックアップが Azure Blob Storage に保存される一方、実際のデータは Azure Cosmos DB 内にローカルに存在します。
短い待機時間を保証するために、バックアップのスナップショットは、現在の書き込みリージョン (または、マルチリージョン書き込み構成の場合は、書き込みリージョンの 1 つ) と同じリージョンの Azure Blob Storage に格納されます。 リージョンの障害に対する回復性を確保するために、Azure BLOB ストレージにあるバックアップ データの各スナップショットが、地理冗長ストレージ (GRS) 経由でもう一度レプリケートされます。 バックアップのレプリケート先のリージョンは、ソース リージョンと、ソース リージョンに関連付けられているリージョン ペアに基づいています。 詳細については、Azure リージョンの geo 冗長ペアの一覧の記事を参照してください。 このバックアップに直接アクセスすることはできません。 サポート リクエストを通してお客様から要求があると、Azure Cosmos DB チームがバックアップを復元します。
次の図は、3 つのプライマリ物理パーティションがすべて米国西部に配置されている Azure Cosmos DB コンテナーの様子を示しています。 このコンテナーは、米国西部のリモート Azure Blob Storage アカウントにバックアップされてから、米国東部にレプリケートされます。
バックアップは、お使いのアプリケーションのパフォーマンスや可用性に影響を与えずに取得されます。 Azure Cosmos DB では、データのバックアップがバックグラウンドで実行され、プロビジョニング済みのスループット (RU) を余計に消費することも、データベースのパフォーマンスや可用性に影響することもありません。
定期的なバックアップ モードでは、バックアップは Azure Cosmos DB アカウントの書き込みリージョンでのみ作成されます。 復元アクションは常に、ソース アカウントの書き込みリージョンにある新しいアカウントにデータを復元します。
新しいアカウントに復元される内容
- プロビジョニングされたスループット コンテナー、共有スループット データベース、またはアカウント全体を任意に組み合わせて復元できます。
- 復元操作では、すべてのデータとそのインデックス プロパティが新しいアカウントに復元されます。
- 復元の期間は、復元する必要があるデータの量によって異なります。
- 新しく復元されたデータベース アカウントの整合性設定は、ソース データベース アカウントの整合性設定と同じになります。
復元されないもの
ポイントインタイム リストア後に、次の構成は復元されません。
- 共有スループット データベースの下にあるコンテナーのサブセットは復元できません。 データベース全体をまとめて復元することはできます。
- データベース アカウント キー。 復元されるアカウントは、新しいデータベース アカウント キーで生成されます。
- ファイアウォール、VNET、データ プレーン RBAC、またはプライベート エンドポイント設定。
- リージョン。 復元されるアカウントは、ソース アカウントの書き込みリージョンである 1 つのリージョン アカウントのみです。
- ストアド プロシージャ、トリガー、UDF。
- ロールベースのアクセス制御の割り当て。 これらは再割り当てする必要があります。
- TTL の有効期限が切れたために削除されたドキュメント。
- Synapse Link が有効なときの分析データ。
- 具体化されたビュー
これらの構成の一部は、復元の完了後に復元されたアカウントに追加できます。
Azure Synapse Link を使用した Azure Cosmos DB バックアップ
Azure Synapse Link が有効なアカウントの場合、分析ストア データはバックアップと復元に含まれません。 Azure Synapse Link が有効になっている場合、トランザクション ストア内のデータは、Azure Cosmos DB によって、スケジュールされたバックアップ間隔で引き続き自動的にバックアップされます。 現時点では、分析ストア内のデータの自動バックアップと復元はサポートされていません。
バックアップのコストを理解する
2 回のバックアップは無料で提供され、追加のバックアップは、バックアップ ストレージの料金セクションに記載されている、リージョンに基づくバックアップ ストレージの価格に従って課金されます。
たとえば、バックアップ保持期間が 240 時間 (つまり 10 日) に構成され、バックアップ間隔が 24 時間に構成されているシナリオを考えてみます。 この構成は、バックアップ データのコピーが 10 個あることを意味します。 Azure 米国リージョンに 1 TB のデータがある場合、その月のバックアップ ストレージのコストは 0.12 * 1000 * 8
になります。
保持または復元を管理するために必要なアクセス許可
CosmosdbBackupOperator、所有者、または共同作成者のロールの一部であるプリンシパルは、復元を要求したり、保有期間を変更したりできます。
Azure Cosmos DB での定期的なバックアップの手動管理
Azure Cosmos DB NoSQL 用 API アカウントをお持ちの場合は、次のいずれかの方法を使用して、独自のバックアップを維持することもできます。
Azure Data Factory
Azure Data Factory を使用して、データを定期的に任意のストレージ ソリューションに移動します。
Azure Cosmos DB の変更フィード
Azure Cosmos DB の変更フィードを使用して、完全バックアップまたは増分変更のデータを定期的に読み取り、独自のストレージに保存します。