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 clone? | Tidak. Anda perlu mengonfigurasi setelan pemeliharaan untuk instance clone. |
Dapatkah Anda membuat clone instance saat zona untuk instance tersebut tidak tersedia? | Ya. Jika meng-clone instance zonal, Anda dapat menentukan zona utama yang berbeda untuk instance tersebut. Jika meng-clone instance ketersediaan tinggi (regional), Anda dapat menentukan zona utama dan sekunder 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. |
Membuat clone instance
Anda dapat meng-clone instance Cloud SQL menggunakan konsol Google Cloud, gcloud CLI, Terraform, atau API.
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Temukan baris instance yang akan di-clone.
- Di kolom Tindakan, klik menu Tindakan Lainnya.
- Klik Buat clone.
- 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 \ --preferred-zone ZONE_NAME \ --preferred-secondary-zone SECONDARY_ZONE_NAME
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.
- ZONE_NAME: Opsional. Nama zona utama untuk instance tujuan. Gunakan ini jika Anda ingin instance tujuan berada di zona utama yang berbeda dengan instance Cloud SQL yang Anda clone. Untuk instance regional, zona ini menggantikan zona utama, tetapi zona sekunder tetap sama dengan instance sumber.
- SECONDARY_ZONE_NAME: Opsional. Nama zona sekunder untuk instance tujuan. Gunakan ini untuk menentukan zona sekunder yang berbeda untuk instance Cloud SQL regional yang ingin Anda clone.
Jika Anda menggunakan parameter --preferred-zone
dan --preferred-secondary-zone
, kondisi berikut akan berlaku:
- Zona utama dan sekunder harus berupa zona yang valid.
- Kedua zona harus berada di region yang sama dengan instance sumber.
- Zona utama dan sekunder harus berbeda.
- Untuk instance zonal, Anda tidak dapat menggunakan parameter
--preferred-secondary-zone
. Jika Anda melakukannya, proses untuk meng-clone instance akan gagal. - Jika Anda tidak menentukan nilai untuk parameter
--preferred-zone
atau--preferred-secondary-zone
, instance yang di-clone akan memiliki zona primer dan sekunder yang sama dengan instance sumber.
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
Menerapkan perubahan
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
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).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
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
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- 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:
- Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan
argumen
deletion_protection
kefalse
.deletion_protection = "false"
- Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan
memasukkan
yes
pada prompt:terraform apply
-
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.
- ZONE_NAME: Opsional. Nama zona utama untuk instance tujuan. Gunakan ini jika Anda ingin instance tujuan berada di zona utama yang berbeda dengan instance Cloud SQL yang Anda clone. Untuk instance regional, zona ini menggantikan zona utama, tetapi zona sekunder tetap sama dengan instance sumber.
- SECONDARY_ZONE_NAME: Opsional. Nama zona sekunder untuk instance tujuan. Gunakan ini untuk menentukan zona sekunder yang berbeda untuk instance Cloud SQL regional yang ingin Anda 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", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Jika Anda menggunakan parameter preferredZone
dan preferredSecondaryZone
, kondisi berikut akan berlaku:
- Zona utama dan sekunder harus berupa zona yang valid.
- Kedua zona harus berada di region yang sama dengan instance sumber.
- Zona utama dan sekunder harus berbeda.
- Untuk instance zonal, Anda tidak dapat menggunakan parameter
preferredSecondaryZone
. Jika Anda melakukannya, proses untuk meng-clone instance akan gagal. - Jika Anda tidak menentukan nilai untuk parameter
preferredZone
ataupreferredSecondaryZone
, instance yang di-clone akan memiliki zona primer dan sekunder yang sama dengan instance sumber.
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.
- ZONE_NAME: Opsional. Nama zona utama untuk instance tujuan. Gunakan ini jika Anda ingin instance tujuan berada di zona utama yang berbeda dengan instance Cloud SQL yang Anda clone. Untuk instance regional, zona ini menggantikan zona utama, tetapi zona sekunder tetap sama dengan instance sumber.
- SECONDARY_ZONE_NAME: Opsional. Nama zona sekunder untuk instance tujuan. Gunakan ini untuk menentukan zona sekunder yang berbeda untuk instance Cloud SQL regional yang ingin Anda 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", "preferredZone": "ZONE_NAME", "preferredSecondaryZone": "SECONDARY_ZONE_NAME" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Jika Anda menggunakan parameter preferredZone
dan preferredSecondaryZone
, kondisi berikut akan berlaku:
- Zona utama dan sekunder harus berupa zona yang valid.
- Kedua zona harus berada di region yang sama dengan instance sumber.
- Zona utama dan sekunder harus berbeda.
- Untuk instance zonal, Anda tidak dapat menggunakan parameter
preferredSecondaryZone
. Jika Anda melakukannya, proses untuk meng-clone instance akan gagal. - Jika Anda tidak menentukan nilai untuk parameter
preferredZone
ataupreferredSecondaryZone
, instance yang di-clone akan memiliki zona primer dan sekunder yang sama dengan instance sumber.
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.
Meng-clone instance yang menggunakan alamat IP internal
Jika instance Cloud SQL Anda menggunakan alamat IP internal, Anda dapat secara opsional menentukan
sebuah
rentang IP yang dialokasikan
untuk alamat IP baru clone tersebut. 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 menerima respons JSON yang mirip dengan yang berikut ini:
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 menerima respons JSON yang mirip dengan yang berikut ini:
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 |
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 |