Mencegah penghapusan instance

Halaman ini menjelaskan cara melindungi instance Cloud SQL dari penghapusan yang tidak disengaja.

Ringkasan

Proteksi dari penghapusan instance memungkinkan Anda mencegah penghapusan instance yang ada dan yang baru secara tidak sengaja. Dengan menggunakan proteksi dari penghapusan instance, Anda dapat mengamankan instance yang penting untuk aplikasi dan layanan Anda.

Anda dapat menyetel opsi proteksi dari penghapusan saat membuat instance. Selain itu, Anda dapat menyetel opsi ini pada instance yang ada. Dalam kedua kasus tersebut, penghapusan dapat dicegah di tingkat instance. Secara default, opsi proteksi dari penghapusan dinonaktifkan, kecuali jika Anda menggunakan konsol Google Cloud atau Terraform untuk membuat instance.

Saat Anda meng-clone instance, instance yang baru akan menerima opsi proteksi dari penghapusan (diaktifkan atau dinonaktifkan) dari instance sumber.

Merencanakan proteksi dari penghapusan

Jika Anda berencana membuat instance, tentukan apakah Anda ingin melindungi instance baru dari penghapusan yang tidak disengaja. Misalnya, sebuah instance kritis harus dilindungi dengan cara ini.

Pertimbangkan juga apakah ada instance yang ingin Anda lindungi dari penghapusan yang tidak disengaja. Jika Anda memiliki beberapa instance yang ingin dilindungi, setel opsi pada setiap instance.

Mempertimbangkan proteksi dari penghapusan untuk replika baca

Saat Anda membuat replika baca, replika baca tersebut tidak mendapatkan setelan perlindungan penghapusan dari instance utama; setelan ini tetap independen. Namun, Anda dapat mengaktifkan proteksi dari penghapusan pada replika baca baru atau yang sudah ada.

Untuk replika baca Cloud SQL, opsi proteksi dari penghapusan berfungsi dengan cara yang sama seperti untuk instance Cloud SQL.

Mengonfirmasi izin atau peran yang diperlukan

Untuk menyetel opsi proteksi dari penghapusan, akun layanan instance Cloud SQL harus memiliki izin atau peran IAM tertentu.

Izin atau peran untuk membuat instance

Seperti dalam kasus operasi terkait, opsi proteksi dari penghapusan memerlukan izin cloudsql.instances.create atau peran cloudsql.admin. Oleh karena itu, saat Anda membuat instance, tidak ada izin tambahan yang diperlukan untuk mengaktifkan perlindungan penghapusan.

Izin atau peran untuk mengedit instance

Seperti dalam kasus operasi yang terkait, perubahan proteksi dari penghapusan memerlukan izin cloudsql.instances.update atau peran cloudsql.editor. Jadi, saat Anda mengedit instance untuk proteksi dari penghapusan, izin tambahan tidak diperlukan.

Perencanaan penghapusan instance

Jika Anda berencana menghapus instance, lakukan langkah berikut terlebih dahulu:

  • Pastikan bahwa instance aman untuk dihapus
  • Konfirmasi bahwa proteksi dari penghapusan dinonaktifkan; jika perlu, edit instance untuk menonaktifkan proteksi dari penghapusan

Batasan proteksi dari penghapusan

Proteksi dari penghapusan pada instance tidak mencegah:

  • Menghentikan instance
  • Memulai ulang instance
  • Mengedit instance
  • Menghapus cadangan
  • Menangguhkan instance karena masalah penagihan
  • Menghapus instance yang ditangguhkan karena masalah penagihan
  • Menghapus instance karena penghapusan project

Menyetel proteksi dari penghapusan pada instance baru

Berikut adalah cara untuk menyetel opsi proteksi dari penghapusan. Secara default, opsi proteksi dari penghapusan dinonaktifkan, kecuali jika Anda menggunakan Google Cloud konsol atau Terraform untuk membuat instance.

Jika proteksi dari penghapusan diaktifkan, upaya untuk menghapus instance akan gagal.

Konsol

  1. Ikuti langkah-langkah untuk memulai membuat Instance.
  2. Di bagian Sesuaikan instance Anda, klik panah drop-down Tampilkan opsi konfigurasi.
  3. Di bagian Perlindungan data, pastikan bahwa kotak centang Proteksi dari penghapusan dicentang.
  4. Sesuai kebutuhan instance Anda, pilih opsi konfigurasi lainnya.
  5. Klik Create Instance.

gcloud

Untuk menyetel proteksi dari penghapusan selama pembuatan instance, gunakan perintah yang serupa dengan berikut ini:

gcloud sql instances create [INSTANCE_NAME] \
    --deletion-protection

REST v1

Untuk menyetel proteksi dari penghapusan selama pembuatan instance, tentukan true di kolom deletionProtection.

Sebelum menggunakan salah satu data permintaan, buat penggantian berikut:

  • project-id: ID project Anda
  • instance-id: ID instance yang diinginkan
  • database-version: Versi database
  • region: region yang diinginkan
  • machine-type: jenis mesin yang diinginkan

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-24T15:34:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Untuk menyetel proteksi dari penghapusan selama pembuatan instance, tentukan true di kolom deletionProtection.

Sebelum menggunakan salah satu data permintaan, buat penggantian berikut:

  • project-id: ID project Anda
  • instance-id: ID instance yang diinginkan
  • database-version: Versi database
  • region: region yang diinginkan
  • machine-type: jenis mesin yang diinginkan

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances

Meminta isi JSON:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-26T15:37:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Untuk melihat cara permintaan REST API yang mendasarinya dibuat untuk tugas ini, lihat APIs Explorer di halaman instances:insert.

Menyetel atau menghapus proteksi dari penghapusan pada instance yang ada

Berikut adalah cara mengedit instance untuk proteksi dari penghapusan. Jika Anda mengaktifkan opsi ini, upaya berikutnya untuk menghapus instance akan gagal.

Konsol

  1. Ikuti langkah-langkah untuk mulai mengedit Instance.
  2. Setelah Anda mengklik Edit, temukan Sesuaikan instance Anda.
  3. Di bagian Perlindungan data, centang atau hapus centang pada kotak centang Aktifkan proteksi dari penghapusan.
  4. Sesuai kebutuhan instance Anda, edit opsi konfigurasi lainnya.
  5. Klik Simpan.

gcloud

Untuk mengaktifkan proteksi dari penghapusan saat Anda memperbarui instance, gunakan perintah seperti berikut:

gcloud sql instances patch [INSTANCE_NAME] \
    --deletion-protection

Untuk menonaktifkan proteksi dari penghapusan saat Anda memperbarui instance, gunakan perintah seperti berikut:

gcloud sql instances patch [INSTANCE_NAME] \
    --no-deletion-protection

REST v1

Untuk menyetel proteksi dari penghapusan saat Anda memperbarui instance, tentukan true di kolom deletionProtection. Untuk menghapus proteksi dari penghapusan, tetapkan false dalam kolom tersebut.

Sebelum menggunakan salah satu data permintaan, buat penggantian berikut:

  • project-id: ID project Anda
  • instance-id: ID instance yang diinginkan

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Meminta isi JSON:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:42:12.281Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Untuk menyetel proteksi dari penghapusan saat Anda memperbarui instance, tentukan true di kolom deletionProtection. Untuk menghapus proteksi dari penghapusan, tetapkan false dalam kolom tersebut.

Sebelum menggunakan salah satu data permintaan, buat penggantian berikut:

  • project-id: ID project Anda
  • instance-id: ID instance yang diinginkan

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/instance-id

Meminta isi JSON:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang serupa seperti di bawah ini:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Untuk melihat cara permintaan REST API yang mendasarinya dibuat untuk tugas ini, lihat APIs Explorer di halaman instances:patch.