Membuat clone instance

Halaman ini menjelaskan cloning, dan membuat clone instance.

Ringkasan

Meng-clone instance Cloud SQL akan membuat instance baru yang merupakan salinan dari instance sumber. Instance baru sepenuhnya independen dari instance sumber.

Pertanyaan umum (FAQ)

Pertanyaan Jawaban
Apakah cloning dapat memengaruhi performa? Tidak. Cloning tidak memiliki dampak performa pada instance sumber.
Apakah cadangan disalin ke instance baru? Tidak. Instance baru akan membuat cadangan otomatis baru. Cadangan manual tidak disalin dari instance sumber.
Apakah instance baru memiliki alamat IP atau alamat yang sama? Tidak. Instance baru memiliki alamat IP atau alamat baru.
Apakah instance baru memiliki setelan konfigurasi yang sama? Ya. Instance baru memiliki setelan yang sama seperti flag database, opsi konektivitas, jenis mesin, serta setelan penyimpanan dan memori.
Apakah replika disalin ke instance baru? Tidak. Anda perlu membuat replika baru untuk instance baru.
Bisakah Anda meng-clone replika? Tidak. Anda tidak dapat meng-clone replika.
Bisakah Anda membuat clone dari waktu sebelumnya? Ya. Pemulihan point-in-time menggunakan cloning untuk memulihkan instance dari waktu sebelumnya. Proses ini membantu memulihkan database Anda dari peristiwa penghancuran.
Apakah setelan pemeliharaan instance sumber otomatis disalin ke instance yang di-clone? Tidak. Anda perlu mengonfigurasi setelan pemeliharaan untuk instance yang di-clone.
Dapatkah Anda membuat clone instance saat zona untuk instance tersebut tidak tersedia? Ya. Saat membuat clone instance, Anda dapat menentukan zona yang berbeda untuk instance tersebut.
Dapatkah Anda membuat clone database ke project lain? Tidak. Anda tidak dapat membuat clone database ke project lain.
Dapatkah Anda membuat clone instance yang pernah di-clone sebelumnya? Ya. Anda dapat membuat clone instance yang telah di-clone dari instance lain.
Apakah pengguna database disalin ke instance baru? Ya, pengguna database disalin ke instance baru. Sandi untuk pengguna tersebut juga akan disalin sehingga tidak perlu dibuat ulang.

Meng-clone instance

Anda dapat meng-clone instance Cloud SQL dengan menggunakan Konsol Google Cloud, gcloud CLI, Terraform, atau API.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Temukan baris instance yang akan di-clone.
  3. Di kolom Tindakan, klik menu Tindakan Lainnya.
  4. Klik Buat clone.
  5. Pada halaman Buat clone, update instance ID jika perlu, dan klik Buat clone, sehingga Clone status instance saat ini dipilih.

    Anda akan dikembalikan ke halaman listingan instance saat clone melakukan inisialisasi.

gcloud

Untuk meng-clone instance, gunakan perintah gcloud sql instances clone:

gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \
--project=PROJECT_ID

Lakukan penggantian berikut:

  • SOURCE_INSTANCE_NAME: nama instance Cloud SQL yang akan di-clone
  • DESTINATION_INSTANCE_NAME: nama instance yang di-clone
  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance sumber dan tujuan

Untuk menjalankan perintah gcloud sql instances clone, Anda harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan guna menjalankan perintah gcloud CLI, lihat Izin Cloud SQL.

Terraform

Untuk meng-clone instance, gunakan resource Terraform

resource "google_sql_database_instance" "clone" {
  name             = "postgres-instance-clone-name"
  region           = "us-central1"
  database_version = "POSTGRES_12"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Menerapkan perubahan

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Menghapus perubahan

Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:

  1. Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan argumen deletion_protection ke false.
    deletion_protection =  "false"
  2. Terapkan konfigurasi Terraform terbaru dengan menjalankan perintah berikut dan memasukkan yes pada perintah:
    terraform apply
  1. Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan yes pada prompt:

    terraform destroy

REST v1

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance sumber dan tujuan
  • SOURCE_INSTANCE_NAME: nama instance Cloud SQL yang akan di-clone
  • DESTINATION_INSTANCE_NAME: nama instance yang di-clone

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Meminta isi JSON:

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Untuk menggunakan metode API instances.clone, Anda harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk menggunakan metode API, lihat Izin Cloud SQL.

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance sumber dan tujuan
  • SOURCE_INSTANCE_NAME: nama instance Cloud SQL yang akan di-clone
  • DESTINATION_INSTANCE_NAME: nama instance yang di-clone

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Meminta isi JSON:

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Untuk menggunakan metode API instances.clone, Anda harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk menggunakan metode API, lihat Izin Cloud SQL.

Membuat clone instance yang tidak tersedia

Konsol

Buat clone instance yang tidak tersedia ke zona lain karena alasan berikut:

  • Zona saat ini yang merupakan tempat instance dikonfigurasi tidak dapat diakses. Instance ini memiliki status FAILED.
  • Instance sedang menjalani pemeliharaan. Instance ini memiliki status MAINTENANCE.

Untuk membuat clone instance yang tidak tersedia, selesaikan langkah-langkah berikut:

  1. Pada konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Temukan baris instance yang akan di-clone.
  3. Di kolom Tindakan, klik menu Tindakan Lainnya.
  4. Klik Buat clone.
  5. Di halaman Buat clone, selesaikan tindakan berikut:
    1. Di kolom ID Instance, perbarui ID instance, jika diperlukan.
    2. Klik Clone dari titik waktu sebelumnya.
    3. Di kolom Titik waktu tertentu, pilih tanggal dan waktu yang ingin Anda gunakan untuk melakukan clone data. Hal ini akan memulihkan status instance dari titik waktu tersebut.
    4. Klik Buat clone.
  6. Selagi clone tersebut melakukan inisialisasi, Anda akan dikembalikan ke halaman listingan instance.

gcloud

Buat clone instance yang tidak tersedia ke zona yang berbeda karena zona saat ini yang merupakan tempat instance dikonfigurasi tidak dapat diakses.

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--point-in-time DATE_AND_TIME_STAMP \
--preferred-zone ZONE_NAME

Pengguna atau akun layanan yang menjalankan gcloud sql instances clone perintah harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan guna menjalankan perintah gcloud CLI, lihat Izin Cloud SQL.

REST v1

Buat clone instance yang tidak tersedia ke zona yang berbeda karena zona saat ini yang merupakan tempat instance dikonfigurasi tidak dapat diakses.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project.
  • SOURCE_INSTANCE_NAME: nama instance sumber.
  • TARGET_INSTANCE_NAME: nama instance target (yang di-clone).
  • DATE_AND_TIME_STAMP: stempel tanggal dan waktu untuk instance sumber dalam zona waktu UTC dan dalam format RFC 3339 (misalnya,
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: Opsional. Nama zona untuk instance target. Hal ini digunakan untuk menentukan zona berbeda untuk instance Cloud SQL yang ingin Anda clone. Untuk instance regional, zona ini menggantikan zona utama, tetapi zona sekunder tetap sama dengan zona instance.

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Meminta isi JSON:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Pengguna atau akun layanan yang menggunakan metode API instances.clone harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk menggunakan metode API, lihat Izin Cloud SQL.

REST v1beta4

Buat clone instance yang tidak tersedia ke zona yang berbeda karena zona saat ini yang merupakan tempat instance dikonfigurasi tidak dapat diakses.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project.
  • SOURCE_INSTANCE_NAME: nama instance sumber.
  • TARGET_INSTANCE_NAME: nama instance target (yang di-clone).
  • DATE_AND_TIME_STAMP: stempel tanggal dan waktu untuk instance sumber dalam zona waktu UTC dan dalam format RFC 3339 (misalnya,
    2012-11-15T16:19:00.094Z).
  • ZONE_NAME: Opsional. Nama zona untuk instance target. Hal ini digunakan untuk menentukan zona berbeda untuk instance Cloud SQL yang ingin Anda buat clone-nya. Untuk instance regional, zona ini menggantikan zona utama, tetapi zona sekunder tetap sama dengan instance.

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

Meminta isi JSON:

{
  "cloneContext":
  {
    "destinationInstanceName": "TARGET_INSTANCE_NAME",
    "pointInTime": "DATE_AND_TIME_STAMP",
    "preferredZone": "ZONE_NAME"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Pengguna atau akun layanan yang menggunakan metode API instances.clone harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk menggunakan metode API, lihat Izin Cloud SQL.

Meng-clone instance yang menggunakan alamat IP internal

Jika instance Cloud SQL menggunakan alamat IP internal, Anda dapat secara opsional menentukan rentang IP yang dialokasikan untuk alamat IP baru clone. Contoh, google-managed-services-default.

gcloud

Meng-clone instance, yang secara opsional menentukan rentang IP yang dialokasikan yang ingin digunakan:

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

Pengguna atau akun layanan yang menjalankan perintah gcloud sql instances clone harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan guna menjalankan perintah gcloud CLI, lihat Izin Cloud SQL.

REST v1

Meng-clone instance, yang secara opsional menentukan rentang IP yang dialokasikan yang ingin digunakan:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: project ID
  • source-instance-id: ID instance sumber
  • target-instance-id: ID instance target
  • allocated-ip-range-name: nama rentang IP yang dialokasikan

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Pengguna atau akun layanan yang menggunakan metode API instances.clone harus memiliki izin cloudsql.instances.clone. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan untuk menggunakan metode API, lihat Izin Cloud SQL.

REST v1beta4

Meng-clone instance, yang secara opsional menentukan rentang IP yang dialokasikan yang ingin digunakan:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • project-id: project ID
  • source-instance-id: ID instance sumber
  • target-instance-id: ID instance target
  • allocated-ip-range-name: nama rentang IP yang dialokasikan

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

Pengguna atau akun layanan yang menggunakan metode API instances.clone harus memiliki izin cloudsql.instances.clone. Untuk informasi selengkapnya tentang izin yang diperlukan untuk menggunakan metode API, lihat Izin Cloud SQL.

Jika Anda tidak menentukan rentang IP yang dialokasikan, perilaku berikut akan diterapkan:

  • Jika instance sumber dibuat dengan rentang yang ditentukan, instance yang di-clone akan dibuat dalam rentang yang sama.
  • Jika instance sumber tidak dibuat dengan rentang yang ditentukan, instance yang di-clone akan dibuat dalam rentang acak.

Memecahkan masalah

Masalah Pemecahan masalah
Cloning gagal dengan error constraints/sql.restrictAuthorizedNetworks. Operasi cloning diblokir oleh konfigurasi Authorized Networks. Authorized Networks dikonfigurasi untuk alamat IP publik di bagian Konektivitas pada konsol Google Cloud, dan cloning tidak diizinkan karena pertimbangan keamanan.

Hapus semua entri Authorized Networks dari instance Cloud SQL jika memungkinkan. Atau, buat replika tanpa entri Authorized Networks apapun.

Pesan error: 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].

Anda mencoba menggunakan Konsol Google Cloud untuk meng-clone instance dengan alamat IP pribadi, tetapi Anda tidak menentukan rentang IP yang dialokasikan yang ingin digunakan dan instance sumber tidak dibuat dengan rentang yang ditentukan. Akibatnya, instance yang di-clone dibuat dalam rentang acak.

Gunakan gcloud untuk meng-clone instance dan memberikan nilai untuk parameter
--allocated-ip-range-name. Untuk informasi selengkapnya, lihat Meng-clone instance dengan IP pribadi.