Cloud Spanner から Avro へのデータベースのエクスポート

このページでは、Google Cloud Platform Console を使用して Cloud Spanner から Cloud Spanner データベースをエクスポートする方法について説明します。

このプロセスでは、Cloud Dataflow を使用し、Cloud Storage バケット内のフォルダにデータをエクスポートします。処理後のフォルダには、一連の Avro ファイルと JSON マニフェスト ファイルが格納されます。

REST API または gcloud コマンドライン ツールを使用して Cloud Spanner データベースをエクスポートするには、このページのはじめにの手順を完了し、Cloud Spanner to Cloud Storage Avro の詳細な手順を参照してください。

はじめに

Cloud Spanner データベースをエクスポートするには、まず、Cloud Spanner、Cloud Storage、Compute Engine、Cloud Dataflow の以下の API を有効にする必要があります。

APIを有効にする

また、十分な割り当てと必須の Cloud IAM 権限も必要です。

割り当て要件

GCP サービスごとのエクスポート ジョブの割り当て要件は、次のとおりです。

  • Cloud Spanner: データベースをエクスポートするために追加のノードは必要ありませんが、ジョブが妥当な時間内に終了するようにノードを追加する必要がある場合があります。詳細については、ジョブの最適化をご覧ください。
  • Cloud Storage: エクスポートされたファイル用のバケットがまだない場合は、作成する必要があります。これは、GCP Console で Cloud Storage ページを使用して、または Cloud Spanner ページを使用してエクスポートを作成するときに行うことができます。バケットのサイズを設定する必要はありません。
  • Cloud Dataflow: エクスポート ジョブは、他の Cloud Dataflow ジョブと同じ CPU、ディスク使用量、IP アドレスの Compute Engine の割り当てに従います。
  • Compute Engine: エクスポート ジョブを実行する前に、Cloud Dataflow によって使用される Compute Engine の初期割り当てを設定する必要があります。これらの割り当ては、Cloud Dataflow によるジョブのスケーリングで許可する最大のリソース数を表します。推奨の開始値は次のとおりです。

    • CPU: 200
    • 使用中の IP アドレス: 200
    • 標準永続ディスク: 50 TB

    一般的に、他の調整は必要ありません。Cloud Dataflow では自動スケーリングが提供されているため、エクスポート中に実際に使用したリソースに対してのみ料金を支払います。ジョブでより多くのリソースが使用される可能性がある場合、Cloud Dataflow UI に警告アイコンが表示されます。警告アイコンが表示されてもジョブは完了します。

Cloud IAM 要件

データベースをエクスポートするには、エクスポート ジョブに関連するすべてのサービスを使用するための十分な権限を持つ Cloud IAM の役割も必要です。役割と権限の付与については、IAM 役割の適用をご覧ください。

データベースをエクスポートするには、次の役割が必要です。

  • GCP プロジェクト レベル:
    • Cloud Spanner 閲覧者
    • Dataflow 管理者
    • ストレージ管理者
  • Cloud Spanner データベースまたはインスタンス レベル、あるいは GCP プロジェクト レベル:
    • Cloud Spanner 読み取り

データベースのエクスポート

上記の割り当て要件と IAM 要件を満たすと、既存の Cloud Spanner データベースをエクスポートできます。

Cloud Spanner データベースを Cloud Storage バケットにエクスポートするには、次の手順に従います。

  1. Cloud Spanner インスタンス ページに移動します。

    インスタンス ページに移動

  2. データベースが含まれているインスタンスの名前をクリックします。

  3. [エクスポート] エクスポートの UI 要素のスクリーンショット をクリックします。

  4. [エクスポートの保存場所を選択] で、[参照] をクリックします。

  5. エクスポート用の Cloud Storage バケットがない場合は、次の手順を行います。

    1. [新しいバケット] 新しいバケットの UI 要素のスクリーンショット をクリックします。
    2. バケットの名前を入力します。バケット名は、Cloud Storage 全体で一意であることが必要です。
    3. デフォルトのストレージ クラスとロケーションを選択し、[作成] をクリックします。
    4. バケットをクリックして選択します。

    すでにバケットがある場合は、初期リストからバケットを選択するか、[検索] 検索の UI 要素のスクリーンショット をクリックしてリストをフィルタリングしてから、バケットをクリックして選択します。

  6. [選択] をクリックします。

  7. [エクスポートするデータベースを選択] プルダウン メニューで、エクスポートするデータベースを選択します。

  8. [エクスポート ジョブのリージョンを選択] プルダウン メニューで、リージョンを選択します。

  9. [料金を確認] にあるチェックボックスをオンにして、既存の Cloud Spanner ノードによって発生する料金以外に料金が発生することを確認します。

  10. [エクスポート] をクリックします。

    GCP Console に [データベースの詳細] ページが表示されます。ここには、エクスポート ジョブを説明するボックスが表示されています(ジョブの経過時間など)。

    進行中のジョブのスクリーンショット

ジョブが完了または終了すると、GCP Console の [データベースの詳細] ページにメッセージが表示されます。ジョブが成功した場合は、成功メッセージが表示されます。

エクスポート ジョブの成功メッセージ

ジョブが成功しなかった場合は、失敗メッセージが表示されます。

エクスポート ジョブの失敗メッセージ

ジョブが失敗した場合は、エラーの詳細についてジョブの Cloud Dataflow ログを確認します。

失敗したエクスポート ジョブで作成されたファイルに関する Cloud Storage の料金を回避するには、フォルダとそのファイルを削除します。フォルダの検索方法については、エクスポートの表示をご覧ください。

Cloud Storage でのエクスポートの表示

エクスポートしたデータベースが格納されたフォルダを GCP Console で表示するには、Cloud Storage ブラウザに移動し、前に選択したバケットをクリックします。
Cloud Storage ブラウザに移動

バケットには、エクスポートしたデータベースが格納されたフォルダが含まれています。フォルダ名は、インスタンスの ID、データベース名、エクスポート ジョブのタイムスタンプで始まります。フォルダには以下が含まれています。

  • spanner-export.json ファイル
  • エクスポートしたデータベースの各テーブルの TableName-manifest.json ファイル。
  • 1 つ以上の TableName.avro-#####-of-##### ファイル。拡張子 .avro-#####-of-##### の最初の数字は 0 から始まる Avro ファイルのインデックスを表します。2 番目の数字は各テーブルに対して生成された Avro ファイルの数を表します。

    たとえば、Songs.avro-00001-of-00002 は、Songs テーブルのデータを含む 2 つのファイルのうちの 2 番目のファイルです。

エクスポート ジョブのリージョンの選択

Cloud Spanner インスタンスでリージョン構成を使用するかマルチリージョン構成を使用するかに基づいて、異なるリージョンを選択する場合があります。下りネットワーク課金が発生しないようにするには、Cloud Spanner インスタンスのロケーションと重複するリージョンを選択します。

リージョン インスタンス構成

Cloud Spanner インスタンス構成がリージョンの場合は、エクスポート ジョブに対して同じリージョンを選択して、同じリージョン内の無料の下りを利用します。

同じリージョンを利用できない場合は、料金が適用されます。Cloud Spanner のネットワーク下りの料金を参照し、発生するネットワーク下りの料金が最低になるリージョンを選択してください。

マルチリージョン インスタンス構成

Cloud Spanner インスタンス構成がマルチリージョンの場合は、マルチリージョン構成に含まれるリージョンのいずれかを選択して、同じリージョン内の無料の下りを利用します。

重複するリージョンを利用できない場合は、下り料金が適用されます。Cloud Spanner のネットワーク下りの料金を参照し、発生するネットワーク下りの料金が最低になるリージョンを選択してください。

Cloud Dataflow UI でのジョブの表示またはトラブルシューティング

エクスポート ジョブの開始後、GCP Console の [Cloud Dataflow] セクションで、ジョブの詳細(ログなど)を表示できます。

Cloud Dataflow ジョブの詳細の表示

現在実行中のジョブの詳細を表示するには:

  1. エクスポートしたデータベースの [データベースの詳細] ページに移動します。
  2. ジョブ ステータス メッセージ内の [Cloud Dataflow でジョブの詳細を表示] をクリックします。

    進行中のジョブのステータス メッセージ

    GCP Console に Cloud Dataflow ジョブの詳細が表示されます。

最近実行したジョブを表示するには:

  1. エクスポートしたデータベースの [データベースの詳細] ページに移動します。
  2. [インポート / エクスポート] タブをクリックします。
  3. リスト内のジョブの名前をクリックします。

    GCP Console に Cloud Dataflow ジョブの詳細が表示されます。

1 週間以上前に実行したジョブを表示するには:

  1. GCP Console の Cloud Dataflow ジョブページに移動します。
    ジョブページに移動
  2. リスト内でジョブを見つけ、その名前をクリックします。

    GCP Console に Cloud Dataflow ジョブの詳細が表示されます。

ジョブの Cloud Dataflow ログの表示

Cloud Dataflow ジョブのログを表示するには、上記の説明に従ってジョブの詳細ページに移動し、ジョブ名の右側にある [ログ] をクリックします。

ジョブが失敗した場合は、ログでエラーを探します。エラーがある場合、エラー数が [ログ] の横に表示されます。

[ログ] ボタンの横のエラー数の例

ジョブエラーを表示するには:

  1. [ログ] の横のエラー数をクリックします。

    GCP Console にジョブのログが表示されます。エラーを表示するには、スクロールが必要な場合があります。

  2. エラーアイコン エラーアイコン が表示されているエントリを見つけます。

  3. 個別のログエントリをクリックして、その内容を展開します。

Cloud Dataflow ジョブのトラブルシューティングの詳細については、パイプラインをトラブルシューティングするをご覧ください。

実行速度が遅いエクスポート ジョブの最適化

初期設定の提案に従っている場合は、通常、他の調整は必要ありません。ジョブの実行速度が遅い場合は、その他の最適化を試すことができます。

  • ジョブとデータのロケーションの最適化: Cloud Spanner インスタンスと Cloud Storage バケットが配置されている同じリージョン内で Cloud Dataflow ジョブを実行します。

  • 十分な Cloud Dataflow リソースの確保: 関連する Compute Engine の割り当てによって Cloud Dataflow ジョブのリソースが制限されている場合、Google Cloud Platform Console の、ジョブの Cloud Dataflow ページに警告アイコン 警告アイコン とログメッセージが表示されます。

    割り当て制限の警告のスクリーンショット

    この場合、CPU、使用中の IP アドレス、標準永続ディスクの割り当てを増やすと、ジョブの実行時間が短くなる可能性がありますが、Compute Engine の追加料金が発生する場合があります。

  • Cloud Spanner の CPU 使用率の確認: インスタンスの CPU 使用率が 65% を超えている場合は、そのインスタンスのノード数を増やすことができます。追加のノードによって Cloud Spanner のリソースが増加し、ジョブは速くなりますが、Cloud Spanner の追加料金が発生します。

エクスポート ジョブのパフォーマンスに影響する要素

エクスポート ジョブの完了にかかる時間には、いくつかの要素が影響します。

  • Cloud Spanner データベースのサイズ: 処理するデータ量が増加すると、必要となる時間とリソースも多くなります。

  • Cloud Spanner データベースのスキーマ(インデックスを含む): テーブルの数、行のサイズ、セカンダリ インデックスの数が、エクスポート ジョブの実行にかかる時間に影響します。

  • データのロケーション: データは、Cloud Dataflow を使用して Cloud Spanner と Cloud Storage の間で転送されます。3 つのコンポーネントがすべて同じリージョン内にあることが理想的です。コンポーネントが同じリージョン内にない場合は、リージョン間のデータの移動によってジョブは遅くなります。

  • Cloud Dataflow ワーカーの数: 自動スケーリングを使用することにより、Cloud Dataflow では、処理する必要がある作業量に応じてジョブのワーカー数が選択されます。ただし、CPU、使用中の IP アドレス、標準永続ディスクの割り当てにより、ワーカー数には上限があります。割り当ての上限に達すると、Cloud Dataflow UI に警告アイコンが表示されます。この状況では、進捗は遅くなりますがジョブは完了します。

  • Cloud Spanner に対する既存の負荷: 通常、エクスポート ジョブによって Cloud Spanner インスタンスに軽い負荷が追加されます。インスタンスに既存の負荷がかなりある場合、エクスポート ジョブの実行はさらに遅くなります。

  • Cloud Spanner ノードの数: インスタンスの CPU 使用率が 65% を超えると、ジョブの実行速度はさらに遅くなります。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Spanner のドキュメント