Perlindungan pelepasan objek skema

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

Memahami keamanan penghapusan objek skema

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

Untuk tujuan ini, Spanner melacak statistik akses untuk setiap objek skema. Akses ini mencakup penyisipan, update, 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, kemungkinan objek tersebut masih digunakan.

Mengaktifkan perlindungan penghapusan objek skema

Untuk mengaktifkan perlindungan penghapusan, tetapkan durasi tidak aktif untuk perlindungan penghapusan ke nilai durasi selain nol, seperti "24 jam" atau "2 hari". Durasi minimum adalah "0 detik" dan durasi maksimum adalah "7 hari". Anda harus menetapkan durasi tidak aktif ke "24 jam" atau lebih lama.

Jika menetapkan durasi tidak aktif ke "24 jam", Anda hanya dapat menghapus objek skema jika objek tersebut 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 "0 detik" (inklusif) dan "7 hari" (inklusif). Direkomendasikan: "24 jam".

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 "0 detik" (inklusif) dan "7 hari" (inklusif). Direkomendasikan: "24 jam".

Menonaktifkan perlindungan penghapusan objek skema

Untuk menonaktifkan perlindungan penghapusan, tetapkan durasi tidak aktif ke nilai durasi nol, "0 detik", 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 penghapusan objek skema tidak diaktifkan dalam skenario berikut:

  1. Anda membuat database dalam satu jam terakhir.
  2. Objek memiliki akses baca frekuensi rendah (kurang dari 10 per jam).
  3. Anda membuat objek skema dalam durasi tidak aktif. Artinya, jika objek skema dibuat lebih baru dari durasi yang ditentukan dalam schema_drop_protection_inactivity_period, objek tersebut tidak dilindungi dari penghapusan. Misalnya, jika schema_drop_protection_inactivity_period adalah 7d, tabel apa pun yang dibuat dalam 7 hari terakhir dapat dihapus meskipun baru-baru ini diakses.

    Perilaku ini memfasilitasi pengujian: jika perlindungan diterapkan ke objek yang baru dibuat, Anda tidak akan dapat membuat, menguji, dan segera menghapus tabel sementara, tetapi harus menunggu 7 hari hingga periode tidak aktif berlalu sebelum pembersihan dapat dilakukan.

Batas minimum 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 untuk 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 dihapus dan Anda tidak dapat mengidentifikasi apa yang mengaksesnya, lihat hal berikut:

Langkah berikutnya

Pelajari cara mencegah penghapusan database.