SQL ファイルをインポートする

SQL コマンドの書式なしテキスト スクリプトからデータベースを再構築するには、Cloud Storage バケットに保存されている SQL ファイルを AlloyDB for PostgreSQL クラスタにインポートします。

AlloyDB クラスタへのデータのインポートをキャンセルできます。詳細については、インポート オペレーションをキャンセルするをご覧ください。

SQL ダンプファイルをインポートするときは、ダンプの作成元の PostgreSQL バージョンが AlloyDB インスタンスの PostgreSQL バージョンと互換性があることを確認してください。上位バージョンから下位バージョンにダンプファイルをインポートすると、SQL 構文の互換性がないために失敗することがあります。

始める前に

インポート オペレーションを開始する前に、次のことを行います。

  • データベースに十分な保存容量があることを確認します。
  • インポート オペレーションではデータベース リソースが使用されますが、クラスタのプロビジョニングが不足していない限り、インポートによって通常のデータベース オペレーションが妨げられることはありません。

AlloyDB へのインポートに必要なロールと権限

Cloud Storage から AlloyDB にデータをインポートするには、インポートを開始するユーザーに次のいずれかのロールが必要です。

また、AlloyDB クラスタのサービス アカウントには、次のいずれかのロールが必要です。

  • storage.objectViewer IAM ロール
  • 次の権限を含むカスタムロール:
    • storage.objects.get

IAM ロールについては、Identity and Access Management をご覧ください。

SQL ファイルを AlloyDB クラスタにインポートする

SQL ファイルを使用して AlloyDB クラスタにデータをインポートする手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. クラスタ名をクリックして、そのクラスタの [概要] ページを開きます。

  3. [インポート] をクリックします。

  4. [ファイル形式] で [SQL] を選択します。

  5. [ソースファイルを選択] で、パソコンからファイルをアップロードするか、Cloud Storage のロケーションからファイルを選択するかを選択します。

    1. パソコンからファイルをアップロードする手順は次のとおりです。

      1. [パソコンからファイルをアップロードする] を選択します。
      2. [ローカル ファイルの選択] の横にある [参照] をクリックして、ローカルマシンから SQL ファイルを選択します。
      3. [Cloud Storage のロケーションを選択します] の横にある [参照] をクリックして、アップロードしたローカル ファイルを保存する Cloud Storage のロケーションを選択します。
      4. [アップロード] をクリックして、ファイルをアップロードします。
    2. Cloud Storage バケットに存在している SQL ファイルを選択するには、次の操作を行います。

      1. [Google Cloud Storage からファイルを選択] を選択します。
      2. [bucket-name/file-name] の横にある [参照] をクリックして、Cloud Storage バケットから SQL ファイルを選択します。
  6. [データベース] プルダウン メニューから、データをインポートするデータベースを選択します。

    SQL ダンプファイルに \connect(または \c)メタコマンドが含まれている場合は、 Google Cloud コンソールで選択したターゲット データベースがオーバーライドされます。

  7. 省略可: インポート オペレーションに対してユーザーを指定するには、[ユーザー オプションを表示] をクリックし、[ユーザー] フィールドにユーザー名を入力します。

  8. インポート オペレーションを開始するには、[インポート] をクリックします。

gcloud

  1. Cloud Storage バケットを作成します。
  2. SQL ファイルをバケットにアップロードします。ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  3. gcloud storage buckets add-iam-policy-binding を使用して、バケットの AlloyDB クラスタのサービス アカウントに storage.objectViewer IAM ロールを付与します。

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    IAM 権限の設定については、IAM 権限の使用をご覧ください。

  4. ファイルをインポートします。

    gcloud alloydb clusters import CLUSTER_NAME \
      --region=REGION \
      --database=DATABASE_NAME \
      --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' \
      --user=USERNAME \
      --sql

    次のように置き換えます。

    • CLUSTER_NAME: クラスタの名前。
    • REGION: AlloyDB クラスタがデプロイされているリージョン。
    • DATABASE_NAME: クラスタ内のデータベースの名前。
    • BUCKET_NAME: Cloud Storage バケット名。
    • PATH_TO_SQL_FILE: SQL ファイルへのパス
    • USERNAME: インポート オペレーションのユーザー。

    コマンドから PERMISSION_DENIED のようなエラーが返された場合は、権限を確認してください。

    import コマンドの使用方法については、gcloud alloydb clusters import コマンドのリファレンス ページをご覧ください。

  5. 以前に設定した IAM 権限を保持する必要がない場合は、gcloud storage buckets remove-iam-policy-binding を使用して削除します。

REST v1

  1. Cloud Storage バケットを作成します。
  2. SQL ファイルをバケットにアップロードします。ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。
  3. gcloud storage buckets add-iam-policy-binding を使用して、バケットの AlloyDB クラスタのサービス アカウントに storage.objectViewer IAM ロールを付与します。サービス アカウントの形式は次のとおりです。

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    IAM 権限の設定については、IAM 権限の使用をご覧ください。

  4. SQL ファイルをインポートします。

    次の HTTP メソッドと URL を使用します。

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • LOCATION_ID: AlloyDB クラスタがデプロイされているリージョン。
    • CLUSTER_ID: クラスタ ID。
    • BUCKET_NAME: Cloud Storage バケット名。
    • PATH_TO_SQL_FILE: SQL ファイルへのパス
    • USER: インポートに使用するユーザー。
    • DATABASE_NAME: AlloyDB クラスタ内のデータベースの名前。

    リクエストの本文(JSON):

    {
       "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE",
       "database": "DATABASE_NAME",
       "user": "USER",
       "sqlImportOptions": {}
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    curl(Linux、macOS、Cloud Shell)

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
    

    PowerShell(Windows)

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
    

    次のような JSON レスポンスが返されます。

    レスポンス

    {
     "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
      "createTime": "2025-01-04T13:12:32.363393723Z",
      "target": "projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    

    別のユーザーがインポートするには、ユーザー プロパティを指定します。

  5. 以前に設定した IAM 権限を保持する必要がない場合は、削除してください。

    リクエストのパラメータの一覧については、clusters.import をご覧ください。

インポート オペレーションのステータスを確認する

インポート オペレーションのステータスを確認する手順は次のとおりです。

gcloud

gcloud alloydb operations describe コマンドを使用して、実行します。

gcloud alloydb operations describe OPERATION_ID --region=REGION

特定のオペレーションの詳細の一覧表示や、特定のオペレーションのキャンセルもできます。このコマンドの詳細については、gcloud alloydb operations コマンドのリファレンス ページをご覧ください。

REST v1

GET メソッドと次の URL を使用します。

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

詳細については、get をご覧ください。

リクエストのデータを使用する前に、次のように置き換えます。

  • REGION: AlloyDB クラスタがデプロイされているリージョン。
  • PROJECT_ID: プロジェクト ID。
  • OPERATION_ID: インポート オペレーションの ID。詳細については、始める前にをご覧ください。

リクエストを送信するには、次のいずれかのオプションを開きます。

curl(Linux、macOS、Cloud Shell)

次のコマンドを実行します。

  curl -X GET \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
 

PowerShell(Windows)

次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID" | Select-Object -Expand Content

成功した場合、レスポンスの本文には Operation のインスタンスが含まれます。

次のステップ