Perlindungan pelepasan objek skema

Halaman ini menjelaskan cara melindungi objek skema seperti tabel, indeks, dan kolom dari penghapusan yang tidak disengaja.

Memahami keamanan pelepasan objek skema

Perlindungan penghapusan objek skema Spanner mengandalkan statistik akses objek skema untuk menentukan apakah objek aman untuk dihapus. Jika sistem menentukan bahwa objek tidak aman, sistem akan menolak permintaan pengguna untuk menghapus objek skema. Menghapus objek tersebut dapat menyebabkan kegagalan tugas klien yang masih mengakses objek. Selain itu, memulihkan objek yang dilepas tanpa menyebabkan kehilangan data sangat sulit atau tidak mungkin dilakukan.

Untuk itu, Spanner melacak statistik akses untuk setiap objek skema. Akses ini mencakup penyisipan, pembaruan, atau penghapusan DML, kueri SQL, penulisan API, dan pembacaan API. Dengan menggunakan statistik akses ini, Spanner menentukan apakah objek skema mungkin masih digunakan. Jika objek baru-baru ini diakses, objek tersebut kemungkinan masih digunakan.

Mengaktifkan perlindungan penghapusan objek skema

Untuk mengaktifkan perlindungan dari jatuh, tetapkan durasi tidak aktif untuk perlindungan dari jatuh ke nilai durasi bukan nol, seperti "24 jam" atau "2 hari". Durasi minimum adalah "0s" dan durasi maksimum adalah "7d". Anda harus menyetel durasi tidak aktif ke "24 jam" atau lebih lama.

Jika Anda menyetel durasi tidak aktif ke "24 jam", Anda hanya dapat menghapus objek skema jika objek tidak diakses dalam 24 jam terakhir.

GoogleSQL

Untuk mengetahui informasi selengkapnya, lihat ALTER DATABASE.

gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET OPTIONS ( schema_drop_protection_inactivity_period="DURATION" )'

Ganti kode berikut:

  • DATABASE_NAME: nama database Anda.
  • INSTANCE_ID: ID instance database Anda.
  • DURATION: antara "0s" (inklusif) dan "7d" (inklusif). Direkomendasikan: "24h".

PostgreSQL

Untuk mengetahui informasi selengkapnya, lihat ALTER DATABASE.

gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME" SET spanner.schema_drop_protection_inactivity_period="DURATION" '

Ganti kode berikut:

  • DATABASE_NAME: nama database Anda.
  • INSTANCE_ID: ID instance database Anda.
  • DURATION: antara "0s" (inklusif) dan "7d" (inklusif). Direkomendasikan: "24h".

Menonaktifkan perlindungan penghapusan objek skema

Untuk menonaktifkan perlindungan dari jatuh, tetapkan durasi tidak aktif ke nilai durasi nol, "0s", atau tetapkan nilai opsi ke null.

GoogleSQL

Untuk mengetahui informasi selengkapnya, lihat ALTER DATABASE.

gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET OPTIONS ( schema_drop_protection_inactivity_period=null )'

Ganti kode berikut:

  • DATABASE_NAME: nama database Anda.
  • INSTANCE_ID: ID instance database Anda.

PostgreSQL

Untuk mengetahui informasi selengkapnya, lihat ALTER DATABASE.

gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET spanner.schema_drop_protection_inactivity_period=null'

Ganti kode berikut:

  • DATABASE_NAME: nama database Anda.
  • INSTANCE_ID: ID instance database Anda.

Peringatan

Perlindungan pelepasan objek skema tidak diaktifkan dalam skenario berikut:

  1. Anda membuat database dalam satu jam terakhir.
  2. Anda membuat objek skema dalam durasi tidak aktif.
  3. Objek memiliki akses baca frekuensi rendah (kurang dari 10 per jam).

Batas akses baca default adalah 10 per jam, tetapi Anda dapat mengganti default menggunakan opsi database berikut:

GoogleSQL

Untuk mengetahui informasi selengkapnya, lihat ALTER DATABASE.

gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET OPTIONS ( schema_drop_protection_usage_lowerbound=<threshold> )'

PostgreSQL

Untuk mengetahui informasi selengkapnya, lihat ALTER DATABASE.

gcloud spanner databases ddl update DATABASE_NAME \
--instance=INSTANCE_ID \
--ddl='ALTER DATABASE `DATABASE_NAME` SET spanner.schema_drop_protection_usage_lowerbound=<threshold> '

Statistik akses tidak dikumpulkan untuk kasus berikut:

  1. Akses yang gagal (kueri, DML, dll.) tidak dihitung sebagai akses pengguna.
  2. Akses sistem tidak dihitung.
  3. Akses tulis (termasuk penyisipan dan update DML) diabaikan untuk indeks.
  4. Akses tulis diabaikan untuk kolom yang dihasilkan tersimpan.

Pemecahan masalah

Jika objek skema gagal dilepas dan Anda tidak dapat mengidentifikasi apa yang mengaksesnya, lihat hal berikut:

Langkah berikutnya

Pelajari cara mencegah penghapusan database.