Spanner のポイントインタイム リカバリ(PITR)は、偶発的な削除や書き込みから保護します。たとえば、オペレーターがデータを誤って書き込みした場合や、アプリケーション ロールアウトによってデータベースが破損した場合に PTR を使用すると、最長で過去 7 日前までのデータを復元できます。データを長期間保持する必要がある場合は、バックアップと復元またはエクスポートとインポートを使用できます。
デフォルトでは、データベースにすべてのデータとスキーマのすべてのバージョンが 1 時間保持されます。version_retention_period
オプションを使用すると、この制限を 7 日間まで延長できます。手順については、保持期間の設定をご覧ください。Spanner は、古いバージョンのデータをマイクロ秒単位で保存します。またデータベースは、古いデータを復元できる最も古いバージョンを表す earliest_version_time
を保持します。
データの復元方法
データを復元するには、次の 2 つの方法があります。
データベースの一部を復元するには、過去のクエリ条件とタイムスタンプを指定してステイル読み取りを実行し、結果をライブ データベースへ書き戻します。これは通常、ライブ データベースの特定されたオペレーションに使用されます。たとえば、特定のエンティティが偶発的に削除された場合や、データのサブセットを誤って更新した場合、この方法で復元できます。手順については、データベースの一部を復元するをご覧ください。
データベース全体を復元するには、過去のタイムスタンプを指定してデータベースをバックアップまたはエクスポートし、新しいデータベースへ復元またはインポートします。これは通常、破損が発生する前の特定の時点にデータベースを元に戻す必要がある場合に、データ破損の問題から回復するために使用されます。データベースのバックアップまたはエクスポートには数時間かかる場合があり、既存のデータベースへの復元やインポートはできません。手順については、データベース全体の復元をご覧ください。
パフォーマンスに関する注意事項
保持期間が長いデータベース、特にデータを頻繁に上書きするデータベースは、より多くのシステム リソースを使用します。これは特にインスタンスに十分なコンピューティング容量がプロビジョニングされていない場合に、データベースのパフォーマンスに影響する可能性があります。データベースの上書きレートが非常に高い場合(たとえば、データベースが 1 日に複数回上書きされる場合)、保持期間を徐々に増やし、システムをモニタリングすることを検討してください。次の点にご注意ください。
ストレージ使用率の増加。ストレージのアラートを設定して、ストレージの上限を超えないようにすることをおすすめします。保持期間を延長すると、データベースに古いバージョンのデータが蓄積するにつれて、ストレージ使用量が徐々に増加することに注意してください。これは、以前の保持期間では期限切れになっている古いデータが、新たな保持期間では期限切れでなくなったためです。たとえば、保持期間を 3 日から 7 日に延長した場合、データベース ストレージの使用量が安定するまでに 4 日間待つ必要があります。また、Google ではストレージの増加を見積もる手順も示しています。
CPU 使用率とレイテンシの増加。Spanner は、追加のコンピューティング リソースを使用して、古いバージョンのデータを圧縮して維持します。インスタンスとデータベースをモニタリングして、レイテンシと CPU 使用率が許容レベルを維持していることを確認します。
スキーマ更新の実行時間をの増加。保持期間を伸ばすと、スキーマ バージョンを長期間保持しなければならないため、サーバー リソースが空くまでスキーマの更新が
throttled
になる可能性があります。スキーマ更新のベスト プラクティスに従い、スキーマ更新の制限内に収まっていることを確認してください。
料金
PITR 機能の使用に追加料金はかかりません。ただし、データベースのバージョン保持期間をデフォルトの 1 時間から延長すると、データベース ストレージとコンピューティング容量の費用が増加する可能性があります。オンデマンド バックアップの費用は影響を受けません。これは、データベースの 1 つのバージョンのみが保存されるためです。詳細については、パフォーマンスに関する考慮事項セクションをご覧ください。データベースのバージョン保持期間を延長する前に、データベース ストレージの予想される増加量を見積もることができます。
Spanner の課金に関する一般的な情報については、Spanner の料金をご覧ください。
次のステップ
- PITR を使用したデータの復元方法の詳細をご覧ください。