Cloud SQL にデータをインポートする

BAK ファイルから Cloud SQL へのデータのインポート

インスタンスのバージョンが Microsoft SQL Server Enterprise Edition の場合、暗号化された BAK ファイルをインポートできます。

始める前に

  • 以下の手順については、新しいデータベースを指定する準備をします。BAK ファイルのインポートを開始する前にデータベースを作成しないでください。
  • この手順では、Cloud Storage からファイルをインポートする必要があります。Cloud Storage からデータをインポートするには、Cloud SQL インスタンスのサービス アカウントまたはユーザーに Storage Object Adminstorage.objectAdmin)IAM ロールを設定する必要があります。IAM ロールについては、Cloud Storage の Cloud Identity and Access Management をご覧ください。

    Google Cloud Console のインスタンスのサービス アカウント名は、インスタンスの [概要] ページで確認できます。Cloud Storage バケットのロールは、gsutil ツールを使用して確認できます。

    gsutil iam get gs://[BUCKET_NAME]

    バケットでの IAM 使用について詳しくは、こちらをご覧ください。

Cloud Storage にある BAK ファイルからデータをインポートする

BAK ファイルを使用して Cloud SQL インスタンスにデータをインポートするには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンスを選択して [概要] ページを開きます。
  3. ボタンバーで [インポート] をクリックします。
  4. [データのインポート元となるファイルを選択してください] で、インポートに使用するバケットと BAK ファイルのパスを入力します。または、次のようにしてファイルを参照します。
    1. [参照] をクリックします。
    2. [ロケーション] で、リスト内のバケット名をダブルクリックします。
    3. リストからファイルを選択します。
    4. [選択] をクリックします。

    圧縮ファイル(.gz)または非圧縮ファイルをインポートできます。

  5. [形式] で [BAK] を選択します。
  6. BAK ファイルをインポートする Cloud SQL インスタンスで [データベース] を指定します。
  7. [インポート] をクリックしてインポートを開始します。

gcloud

  1. インポート用のバケットを作成します。

    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    このステップは必須ではありませんが、他のデータへ一切アクセスできないようにするために、実行することを強く推奨します。

  2. この手順では、Cloud Storage からファイルをインポートする必要があります。Cloud Storage からデータをインポートするには、Cloud SQL インスタンスのサービス アカウントまたはユーザーに Storage Object Adminstorage.objectAdmin)IAM ロールを設定する必要があります。IAM ロールについては、Cloud Storage の Cloud Identity and Access Management をご覧ください。

    Google Cloud Console のインスタンスのサービス アカウント名は、インスタンスの [概要] ページで確認できます。Cloud Storage バケットのロールは、gsutil ツールを使用して確認できます。

    gsutil iam get gs://[BUCKET_NAME]

    バケットでの IAM 使用について詳しくは、こちらをご覧ください。

  3. BAK ファイルからのデータをバケットにアップロードします。
  4. エクスポート元のインスタンスを記述します。
    gcloud sql instances describe [INSTANCE_NAME]
    
  5. serviceAccountEmailAddress フィールドをコピーします。
  6. gsutil iam を使用して、バケットのサービス アカウントに storage.objectViewer IAM ロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
  7. ファイルからデータをインポートします。
    gcloud beta sql import bak [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME]
    
  8. 以前に設定した IAM の権限を保持する必要がない場合は、gsutil iam を使用して削除してください。

REST v1beta4

  1. Cloud Storage バケットをまだ作成していない場合は、作成します。

    バケットの作成方法については、ストレージ バケットの作成をご覧ください。

  2. ファイルをバケットにアップロードします。

    ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  3. インスタンスにバケットに対する storage.objectAdmin IAM のロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
  4. ファイルからデータをインポートします。

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

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • bucket_name: Cloud Storage バケット名
    • path_to_bak_file: BAK ファイルへのパス
    • database_name: Cloud SQL インスタンス内のデータベースの名前

    HTTP メソッドと URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    JSON 本文のリクエスト:

    {
     "importContext":
       {
          "fileType": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
        }
    }
    
    

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

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

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

    このリクエストのパラメータの完全な一覧については、instances:import ページをご覧ください。
  5. 以前に設定した IAM 権限を保持する必要がない場合は、権限を削除します。

ERROR_RDBMS のようなエラーが発生した場合、テーブルが存在することを確認してください。存在している場合は、バケットに対して正しい権限があることを確認します。Cloud Storage のアクセス制御の構成について詳しくは、アクセス制御リストの作成と管理をご覧ください。

このタスクのために基盤となる REST API リクエストがどのように作成されるかについては、instances:import ページの API Explorer をご覧ください。

SQL ファイルから Cloud SQL へのデータのインポート

SQL ファイルは、SQL コマンドのシーケンスを記述したプレーン テキスト ファイルです。

始める前に

  • 以下の手順については、新しいデータベースを指定する準備をします。SQL ファイルのインポートを開始する前にデータベースを作成しないでください。
  • この手順では、Cloud Storage からファイルをインポートする必要があります。Cloud Storage からデータをインポートするには、Cloud SQL インスタンスのサービス アカウントまたはユーザーに Storage Object Adminstorage.objectAdmin)IAM ロールを設定する必要があります。IAM ロールについては、Cloud Storage の Cloud Identity and Access Management をご覧ください。

    Google Cloud Console のインスタンスのサービス アカウント名は、インスタンスの [概要] ページで確認できます。Cloud Storage バケットのロールは、gsutil ツールを使用して確認できます。

    gsutil iam get gs://[BUCKET_NAME]

    バケットでの IAM 使用について詳しくは、こちらをご覧ください。

SQL ファイルのインポート

SQL ファイルを使用して Cloud SQL インスタンスにデータをインポートするには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンスを選択して [インスタンスの詳細] ページを開きます。
  3. ボタンバーで [インポート] をクリックします。
  4. [データのインポート元となるファイルを選択してください] で、インポートに使用するバケットと SQL ファイルのパスを入力します。または、次のようにしてファイルを参照します。
    1. [参照] をクリックします。
    2. [ロケーション] で、リスト内のバケット名をダブルクリックします。
    3. リストからファイルを選択します。
    4. [選択] をクリックします。

    圧縮ファイル(.gz)または非圧縮ファイルをインポートできます。

  5. [形式] で [SQL] を選択します。
  6. Cloud SQL インスタンスで SQL ファイルをインポートするデータベースを指定します。
  7. [インポート] をクリックしてインポートを開始します。

gcloud

  1. インポート用のバケットを作成します。

    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    このステップは必須ではありませんが、他のデータへ一切アクセスできないようにするために、実行することを強く推奨します。

  2. バケットに SQL ファイルをアップロードします。
  3. エクスポート元のインスタンスを記述します。
    gcloud sql instances describe [INSTANCE_NAME]
    
  4. serviceAccountEmailAddress フィールドをコピーします。
  5. gsutil iam を使用して、バケットのサービス アカウントに storage.objectAdmin IAM ロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
  6. ファイルをインポートします。
    gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME]
    
  7. 以前に設定した IAM の権限を保持する必要がない場合は、gsutil iam を使用して削除してください。

REST v1beta4

  1. Cloud Storage バケットをまだ作成していない場合は、作成します。

    バケットの作成方法については、ストレージ バケットの作成をご覧ください。

  2. ファイルをバケットにアップロードします。

    ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  3. インスタンスにバケットに対する storage.objectAdmin IAM のロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
  4. ファイルをインポートします。

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

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • bucket_name: Cloud Storage バケット名
    • path_to_sql_file: SQL ファイルへのパス
    • database_name: Cloud SQL インスタンス内のデータベースの名前

    HTTP メソッドと URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    JSON 本文のリクエスト:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

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

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

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

    このリクエストのパラメータの完全な一覧については、instances:import ページをご覧ください。
  5. 以前に設定した IAM 権限を保持する必要がない場合は、権限を削除します。

ERROR_RDBMS のようなエラーが発生した場合、テーブルが存在することを確認してください。存在している場合は、バケットに対して正しい権限があることを確認します。Cloud Storage でのアクセス制御の構成の詳細については、アクセス制御リストの作成と管理をご覧ください。

このタスクのために基盤となる REST API リクエストがどのように作成されるかについては、instances:import ページの API Explorer をご覧ください。

次のステップ