インスタンスのクローンを作成する

このページでは、Cloud SQL インスタンスのクローンの作成方法について説明します。

Cloud SQL インスタンスのクローンを作成すると、ソース インスタンスのコピーであるが完全に独立した新しいインスタンスが作成されます。クローン作成の完了後にソース インスタンスを変更してもクローンに反映されることはなく、その逆も同様です。

ソース インスタンスの構成(アクティベーション ポリシー、データベース フラグ、接続など)はクローンにコピーされます。インスタンス IP アドレスとレプリカはコピーされません。これらのアイテムは明示的にクローンで構成する必要があります。インスタンスのクローンを作成しても、既存のバックアップのクローンは作成されません。

レプリカのクローンを作成することはできません。別のインスタンスからクローン作成されたインスタンスのクローンを作成することは可能です。

過去の時点におけるインスタンスのクローンを作成できます。これは、破壊的なイベントからデータベースを回復するのに役立ちます。詳しくは、ポイントインタイム リカバリを行うをご覧ください。

第 2 世代インスタンスのクローンを作成する

Console

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

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

  2. クローン作成元のインスタンスを見つけ、そのリストの右端にあるその他の操作メニューを開きます。

    その他メニューの画像

  3. [クローンを作成] をクリックします。
  4. [クローンの作成] ページで、必要に応じてインスタンス ID を更新し、[クローンを作成] をクリックします。[最新状態のインスタンスを複製] は選択されたままにしておきます。

    クローンの初期化中に、インスタンスの一覧ページに戻ります。

gcloud

インスタンスのクローンを作成します。

    gcloud sql instances clone [SOURCE_INSTANCE_NAME] [TARGET_INSTANCE_NAME]
    

REST

インスタンスのクローンを作成します。

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

  • project-id: プロジェクト ID
  • source-instance-id: ソース インスタンス ID
  • target-instance-id: ターゲット インスタンス ID

HTTP メソッドと URL:

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

JSON 本文のリクエスト

    {
      "cloneContext":
      {
        "destinationInstanceName": "target-instance-id"
      }
    }
    

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

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

第 1 世代インスタンスを作成する

gcloud

  1. インスタンスの詳細を取得します。
        gcloud sql instances describe [INSTANCE_NAME]
        
  2. backupConfiguration の下で binaryLogEnabledenabled の値を見つけます。
  3. 値のいずれも有効になっていない場合は、すぐに有効にします。
    1. バックアップを有効にします。
          gcloud sql instances patch [INSTANCE_NAME] --backup-start-time [HH:MM]
          
    2. バイナリログを有効にします。
          gcloud sql instances patch [INSTANCE_NAME] --enable-bin-log
          
  4. バックアップまたはバイナリログが有効になっていなかった場合は、バックアップが取得されるのを待ちます。

    バックアップ期間によっては、これに最長で 1 日かかることがあります。

  5. インスタンスのクローンを作成します。
        gcloud sql instances clone [SOURCE_INSTANCE_NAME] [TARGET_INSTANCE_NAME]
        

cURL

  1. 現在のバックアップ構成の値を取得します。
        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             -X GET \
             https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[SOURCE_INSTANCE_NAME]?fields=settings
        

    出力には backupConfiguration が含まれます。

        "backupConfiguration": [
         {
            "kind": "sql#backupConfiguration",
            "startTime": "12:00",
            "enabled": false,
            "binaryLogEnabled": false
         }
        
  2. enabled または binaryLogEnabled のいずれかが false の場合、インスタンス リソースの patch メソッドを使用して、両方を有効にします。バックアップ構成のプロパティについて、現状を維持するものと、変更するものを指定します。

    バックアップを有効にするには、enabledtrue に設定し、startTime をバックアップ ウィンドウの開始値に設定します。バイナリ ロギングを有効にするには、binaryLogEnabledtrue に設定します。

        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             --data '{"settings" : {"backupConfiguration" : {"startTime": "[HH:MM]", "enabled": true, "binaryLogEnabled": true}}}' \
             -X PATCH \
             https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[SOURCE_INSTANCE_NAME]
        
  3. バックアップまたはバイナリログが有効になっていなかった場合は、バックアップが取得されるのを待ちます。

    バックアップ期間によっては、これに最長で 1 日かかることがあります。

  4. インスタンスのクローンを作成します。
        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             --data '{"cloneContext": {"kind": "sql#cloneContext",
                      "destinationInstanceName": "[TARGET_INSTANCE_NAME]" }}' \
             -X POST \
             https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[SOURCE_INSTANCE_NAME]/clone