継続的バックアップ モードの Azure Cosmos DB アカウントの最新の復元可能なタイムスタンプ

適用対象: NoSQL MongoDB Gremlin Table

Azure Cosmos DB には、コンテナーの最新の復元可能なタイムスタンプを取得するための API が用意されています。 この API は、継続的バックアップ モードが有効になっているアカウントで使用できます。 復元可能な最新のタイムスタンプは、データが正常にバックアップされた UTC 形式の最新のタイムスタンプを表します。 この API を使用すると、復元可能なタイムスタンプを取得して、ライブ アカウントの復元をトリガーしたり、データが時間内にバックアップされていることを監視したりできます。

この API には、アカウントの場所を入力パラメーターとして受け取り、この場所の特定のコンテナーに対する最新の復元可能なタイムスタンプを返す機能もあります。 アカウントが複数の場所に存在する場合、各場所のバックアップが個別に取得されるため、異なる場所のコンテナーの最新の復元可能なタイムスタンプは異なる可能性があります。

既定では、API はコンテナー レベルでのみ機能しますが、データベース レベルまたはアカウント レベルで機能するように簡単に拡張できます。 この記事は、API のセマンティクス、その計算方法、そのユース ケースについて理解するのに役立ちます。 詳細については、NoSQL、MongoDB、テーブル、 Gremlin アカウント用の API の最新の復元タイムスタンプを取得する方法を参照してください。

ユース ケース

最新の復元可能なタイムスタンプは、次のユース ケースで使用できます。

  • コンテナー、データベース、またはアカウントの最新の復元可能なタイムスタンプを取得し、それを使用して復元をトリガーできます。 このタイムスタンプは、指定されたリソースのデータ、またはその基になるすべてのリソースが正常にバックアップされたことを表します。

  • この API を使って、アカウントを削除する前にデータが正常にバックアップされたことを判定できます。 この API によって返されるタイムスタンプが最後の書き込みタイムスタンプより前の場合は、まだバックアップされていないデータがあることを示します。 このような場合は、タイムスタンプが最後の書き込みタイムスタンプ以降になるまで、この API を呼び出す必要があります。 アカウントが複数の場所に存在する場合は、すべての場所で最新の復元可能なタイムスタンプを取得して、アカウントを削除する前に、すべてのリージョンでデータがバックアップ済みであることを確認する必要があります。

  • この API を使用して、データが時間内にバックアップされることを監視できます。 このタイムスタンプは、通常、現在のタイムスタンプから数百秒以内ですが、それを超える場合があります。

Semantics

コンテナーの復元可能な最新のタイムスタンプは、ある場所にあるすべてのパーティションのバックアップが作成された時点までの最小タイムスタンプです。 この API は、ある場所にあるコンテナーのパーティションごとに最新のバックアップ タイムスタンプを取得して、復元可能な最新のタイムスタンプを計算し、それらすべてのタイムスタンプの最小タイムスタンプを返します。 すべてのパーティションのデータがバックアップされ、それらのパーティションに書き込まれた新しいデータがない場合は、現在のタイムスタンプと最後のデータ バックアップ タイムスタンプの最大値が返されます。

パーティションがまだバックアップを作成していないが、バックアップするデータがある場合は、Unix (エポック) の最小タイムスタンプ (1970 年 1 月 1 日午前 0 時 (協定世界時)) が返されます。 このような場合、ユーザーはエポック タイムスタンプより大きいタイムスタンプが返されるまで再試行する必要があります。

最新の復元可能なタイムスタンプの計算

さまざまなシナリオで、最新の復元可能なタイムスタンプ API から返されることが予想される結果について、次の例で説明します。 各シナリオでは、パーティションの現在のログ バックアップ状態、バックアップする保留中のデータ、それらがコンテナーの復元可能なタイムスタンプの計算全体に与える影響について説明します。

たとえば、2 つのリージョン (米国東部、米国西部) に存在するアカウントがあるとします。 2 つのパーティション (Partition1、Partition2) を持つコンテナー "cont1" があります。 このコンテナーの最新の復元可能なタイムスタンプを取得する要求をタイムスタンプ 't3' に送信した場合、このコンテナー全体の最新の復元可能なタイムスタンプは次のように計算されます。

ケース 1: すべてのパーティションのデータがまだバックアップされていない場合

米国東部リージョン:

  • Partition1: 最後のバックアップ時間 = t2 ですが、t2 の後にバックアップするデータがあります。
  • Partition2: 最後のバックアップ時刻 = t3 で、すべてのデータがバックアップされています。
  • 最新の復元可能なタイムスタンプ = min (t2, t3) = t2

米国西部リージョン:

  • Partition1: 最後のバックアップ時間 = t1 ですが、t1 の後にバックアップするデータがあります。
  • Partition2: 最後のバックアップ時間 = t2 ですが、t2 の後にバックアップするデータがあります。
  • 最新の復元可能なタイムスタンプ = min (t1, t2) = t1
ケース 2: すべてのパーティションのデータがバックアップされている場合

米国東部リージョン:

  • Partition1: 最後のバックアップ時刻 = t2 で、すべてのデータがバックアップされています。
  • Partition2: 最後のバックアップ時刻 = t3 で、すべてのデータがバックアップされています。
  • 最新の復元可能なタイムスタンプ = max (現在のタイムスタンプ, t2, t3)

米国西部リージョン:

  • Partition1: 最後のバックアップ時刻 = t3 で、すべてのデータがバックアップされています。
  • Partition2: 最後のバックアップ時刻 = t3 で、すべてのデータがバックアップされています。
  • 最新の復元可能なタイムスタンプ = max (現在のタイムスタンプ, t3, t3)
ケース 3: 1 つ以上のパーティションでまだバックアップが作成されていない場合

米国東部リージョン:

  • Partition1: このパーティションのログ バックアップはまだ作成されていません。
  • Partition2: 最後のバックアップ時間 = t3
  • 最新の復元可能なタイムスタンプ = 1970/1/1 12:00:00 AM

よく寄せられる質問

定期的なバックアップを使用するアカウントでこの API を使用できますか?

いいえ。 この API を使用できるのは、継続的バックアップ モードのアカウントのみです。

この API は、継続的モードに移行したアカウントで使用できますか?

はい。 この API は、継続的バックアップ モードでプロビジョニングしたか、継続的バックアップ モードに正常に移行したアカウントで使用できます。

最新の書き込みタイムスタンプと最新の復元可能なタイムスタンプの間の一般的な遅延時間はどのくらいですか?

ログ バックアップ データは 100 秒ごとにバックアップされます。 ただし、例外的なケースでは、バックアップが 100 秒を超えて遅延する可能性があります。

復元可能なタイムスタンプは、削除されたリソースで機能しますか?

いいえ。 ライブ リソース (データベース、コレクション、またはアカウント) にのみ適用されます。 復元可能なタイムスタンプを取得して、ライブ アカウントの復元をトリガーしたり、データが時間内にバックアップされていることを監視したりできます。

次のステップ