Spanner のインポートとエクスポートの概要

次のいずれかの方法で、Spanner との間で大量のデータをインポートまたはエクスポートできます。

  • Dataflow を使用して Spanner データベースをインポートまたはエクスポートします。
  • Avro ファイル形式または CSV ファイル形式を使用して、Spanner データベースを Cloud Storage バケットにエクスポートします。
  • Avro ファイルまたは CSV ファイルから新しい Spanner データベースにデータをインポートします。

ユースケース

Spanner のインポートとエクスポートは、次のユースケースで使用できます。

  • 一括読み込み: Spanner に一括でデータをインポートできます。
  • 長期バックアップとアーカイブ: データベースをいつでもエクスポートし、任意の Cloud Storage バケット ロケーションに保存して、長期バックアップまたはアーカイブができます。また、ポイントインタイム リカバリを使用して、過去の特定のタイムスタンプからデータベースをエクスポートすることもできます。復元が迅速で、保持期間が短い障害復旧手法をお探しの場合は、バックアップまたはポイントインタイム リカバリ(PITR)の使用を検討してください。

  • 開発プロジェクトまたはテスト プロジェクトへのデータベースのコピー: データベースを本番環境プロジェクトからエクスポートし、開発プロジェクトまたはテスト プロジェクトにインポートして、統合テストやその他のテストに使用できます。

  • 分析用に取り込む: データベースをエクスポートして、運用データを BigQuery などの分析サービスに一括で取り込むことができます。BigQuery が Cloud Storage バケットから Avro 形式のデータを自動的に取り込むことができるため、運用データを簡単に分析できます。データをコピーまたは移動せずに BigQuery を使用して Spanner データをリアルタイムで分析する場合は、代わりに Spanner 連携クエリを使用できます。

インポートおよびエクスポートとバックアップおよび復元を比較する

Spanner のインポートとエクスポートは、多くの点でバックアップと復元に類似しています。次の表では、どちらを使用するかを決める際に役立つように、これらの類似点と相違点を示します。

バックアップと復元インポートとエクスポート
データの整合性 バックアップとエクスポートされたデータベースの両方が、トランザクションと外部一貫性を備えています。
パフォーマンスへの影響 バックアップが、インスタンスのパフォーマンスに影響を与えることはありません。Spanner では、バックアップが、インスタンスのサーバー リソースを利用しない専用ジョブを使用して実行されます。 エクスポートは、データベースのパフォーマンスへの影響を最小限に抑えるため、優先度が中のタスクとして実行されます。詳細については、タスク優先度をご覧ください。
ストレージ形式 高速での復元用に設計された独自の暗号化された形式を使用します。 CSV とAvro の両方のファイル形式がサポートされます。
ポータビリティ バックアップは、元のデータベースと同じインスタンスにcreateできます。

バックアップを作成した後は、リージョンやプロジェクトをまたぐバックアップが必要な場合に、バックアップを異なるリージョンやプロジェクトにあるインスタンスへコピーできます。そうして、バックアップから同じプロジェクト内の任意のインスタンスに新しいデータベースとしてrestoreできます。復元する先のインスタンスは、バックアップが保存されているインスタンスと同じインスタンス構成にする必要があります。
エクスポートされたデータベースは Google Cloud Storage に存在し、CSV または Avro をサポートしている任意のシステムにデータを移行できます。
リテンション バックアップは最長 1 年間保持できます。 エクスポートされたデータベースは Cloud Storage に保存され、デフォルトでは削除されるまで保持されます。ライフサイクル保持ポリシーをカスタマイズできます。
料金 バックアップは、単位時間あたりの使用容量に基づいて Spanner プロジェクトに対して課金されます。詳細については、料金ガイドのセクションをご覧ください。 インポートとエクスポートの課金は、Google Cloud StorageDataflow を使用しているため、より複雑になります。詳細については、データベースのエクスポートとインポートの料金をご覧ください。
復元時間 復元は、復元と最適化の 2 つのオペレーションで行われます。復元オペレーションでは、データをコピーすることなくデータベースでバックアップが直接マウントされるため、最初のバイト転送時間が短縮されます。復元オペレーションが完了すると、データベースを使用できるようになりますが、最適化中は読み取りレイテンシが若干高くなる場合があります。詳しくは、復元の仕組みをご覧ください。 インポートには時間がかかります。すべてのデータがデータベースに書き込まれるのを待つ必要があります。

ファイル形式を比較する

次の表は、Spanner データのインポートおよびエクスポートにおける Avro ファイル形式と CSV ファイル形式の機能の違いを示しています。

能力 Avro 形式 CSV 形式
データベース全体をインポートまたはエクスポートする ×
データベース内の選択したテーブルのみをエクスポートする機能
以前にエクスポートされたテーブルをインポートする機能
過去のタイムスタンプでエクスポートする
Google Cloud CLI を使用したインポートまたはエクスポート
Dataflow を使用したインポートまたはエクスポート
Spanner を使用したインポートまたはエクスポート ×

Avro ファイル

Avro 形式にエクスポートするときに、エクスポートするテーブルのリストを指定できます。この方法でエクスポートされた子テーブルには、親テーブルが付属している必要があります。Spanner は、エクスポートされたファイルにデータベース スキーマ全体を保持します。

Avro 形式からインポートすると、Spanner はエクスポートされたデータベースの全体のスキーマ(すべてのテーブルを含む)を再作成します。元のエクスポートに含まれていたテーブルは、エクスポートされたすべてのデータを受信します。他のテーブルはすべて空のままになります。

Google Cloud コンソールの Spanner ページでは、Avro 形式のインポートとエクスポートのオプションが制限されています。たとえば、ネットワーク オプションとサブネットワーク オプションを設定することはできません。より多くのオプションについては、代わりに Dataflow ページを使用してください。

CSV ファイル

CSV 形式で一度にエクスポートできる Spanner テーブルは 1 つのみです。エクスポートするときに、スキーマはエクスポートされず、データのみがエクスポートされます。

CSV ファイルからインポートする前に、JSON マニフェスト ファイルを作成する必要があります。

料金

Spanner では、エクスポート ツールまたはインポート ツールの使用に対して追加料金は発生しません。データベースを Spanner にインポートする際に、データ ストレージに対して標準料金が課金されます。ただし、データベースのインポートとエクスポートに関連して以下の料金がかかる場合があります。詳細については、データベースのエクスポートとインポートの料金をご覧ください。

次のステップ