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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

概要

Cloud SQL インスタンスのクローンを作成すると、元のインスタンスのコピーが新しいインスタンスとして作成されます。新しいインスタンスは、元のインスタンスから完全に独立しています。

よくある質問

質問 回答
クローン作成はパフォーマンスに影響しますか? いいえ。クローンを作成しても、元のインスタンスのパフォーマンスに影響はありません。
バックアップは新しいインスタンスにコピーされますか? いいえ。新しいインスタンスには新しいバックアップが自動的に作成されます。手動バックアップは元のインスタンスからコピーされません。
新しいインスタンスには同じ IP アドレスが割り振られますか? いいえ。新しいインスタンスには、新しい IP アドレスが割り振られます。
新しいインスタンスの構成は元のインスタンスと同じですか? はい。新しいインスタンスの設定(データベース フラグ、接続オプション、マシンタイプ、ストレージとメモリの設定)は元のインスタンスと同じです。
クローンを作成したインスタンスのクローンを作成できますか? はい。別のインスタンスからクローンを作成したインスタンスのクローンを作成できます。
データベース ユーザーは新しいインスタンスにコピーされますか? はい。ただし、データベース ユーザーのパスワードはコピーされないため、再作成する必要があります。

インスタンスのクローンの作成

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. クローンを作成するインスタンスの行を見つけます。行の右端にある [その他の操作] メニューをクリックします。
  3. [クローンを作成] をクリックします。
  4. [クローンの作成] ページで、必要に応じてインスタンス ID を更新し、[クローンを作成] をクリックします。

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

gcloud

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

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME

Terraform

インスタンスのクローンを作成するには、Terraform リソースを使用します。

resource "google_sql_database_instance" "clone" {
  name             = "sqlserver-instance-clone-name"
  region           = "us-central1"
  database_version = "SQLSERVER_2017_STANDARD"
  root_password = "INSERT-PASSWORD-HERE"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  deletion_protection = false # set to true to prevent destruction of the resource
}

変更を適用する

Google Cloud プロジェクトで Terraform 構成を適用するには、次の手順を行います。

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用する Google Cloud プロジェクトを設定します。
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    
  3. ディレクトリを作成し、そのディレクトリで新規ファイルを開きます。ファイル名には .tf 拡張子が必要です(例: main.tf)。
    mkdir DIRECTORY && cd DIRECTORY && nano main.tf
    
  4. サンプルを main.tf にコピーします。
  5. 環境に適用するサンプル パラメータを確認し、変更します。
  6. Ctrl-x を押してから y を押して、変更を保存します。
  7. Terraform を初期化します。
    terraform init
  8. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  9. 次のコマンドを実行します。プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。

  10. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

変更を削除する

変更を削除するには、次の手順を行います。

  1. 削除の保護を無効にするには、Terraform 構成ファイルで deletion_protection 引数を false に設定します。
    deletion_protection =  "false"
  2. 次のコマンドを実行します。プロンプトで「yes」と入力して、更新された Terraform 構成を適用します。
    terraform apply
  1. 次のコマンドを実行しています。プロンプトで「yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。

    terraform destroy

REST v1

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

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

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

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

JSON 本文のリクエスト:

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

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

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

REST v1beta4

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

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

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

HTTP メソッドと URL:

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

JSON 本文のリクエスト:

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

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

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

プライベート IP を使用したインスタンスのクローンを作成する

Cloud SQL インスタンスでプライベート IP を使用する場合は、必要に応じて、クローンの新しい IP アドレスに割り振り済みの IP 範囲を指定できます。例: google-managed-services-default

gcloud

インスタンスのクローンを作成し、使用する割り振り済みの IP アドレス範囲を指定します。

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--allocated-ip-range-name ALLOCATED_IP_RANGE_NAME

REST v1

インスタンスのクローンを作成し、使用する割り振り済みの IP アドレス範囲を指定します。

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

  • project-id: プロジェクト ID
  • source-instance-id: ソース インスタンス ID
  • target-instance-id: ターゲット インスタンス ID
  • allocated-ip-range-name: 割り振り済みの IP 範囲の名前

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone

JSON 本文のリクエスト:

{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}

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

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

REST v1beta4

インスタンスのクローンを作成し、使用する割り振り済みの IP アドレス範囲を指定します。

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

  • project-id: プロジェクト ID
  • source-instance-id: ソース インスタンス ID
  • target-instance-id: ターゲット インスタンス ID
  • allocated-ip-range-name: 割り振り済みの IP 範囲の名前

HTTP メソッドと URL:

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

JSON 本文のリクエスト:

{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}

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

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

割り振られた IP 範囲を指定しない場合は、次の動作が行われます。

  • ソース インスタンスが指定された範囲で作成された場合、クローン インスタンスは同じ範囲に作成されます。
  • ソース インスタンスが指定範囲で作成されていない場合は、クローン インスタンスがランダムな範囲で作成されます。

トラブルシューティング

問題 トラブルシューティング
constraints/sql.restrictAuthorizedNetworks エラーでクローンの作成に失敗する。 クローン作成のオペレーションが、Authorized Networks 構成によってブロックされている。Authorized Networks は、Google Cloud Console の [接続] セクションでパブリック IP アドレスに構成されており、セキュリティに関する考慮事項により、クローン作成が許可されていません。

可能であれば、Cloud SQL インスタンスからすべての Authorized Networks エントリを削除します。それができない場合は、Authorized Networks エントリなしでレプリカを作成します。

エラー メッセージ: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

Google Cloud コンソールを使用して、プライベート IP アドレスを持つインスタンスのクローンを作成しようとしていますが、割り振られた IP 範囲を指定しなかったため、ソース インスタンスが指定した範囲で作成されていません。その結果、クローニングされたインスタンスはランダムな範囲に作成されます。

gcloud を使用してインスタンスのクローンを作成し、
--allocated-ip-range-name パラメータの値を指定します。詳細については、プライベート IP を使用したインスタンスのクローン作成をご覧ください。