全部产品
Search
文档中心

PolarDB:Drop flashback

更新时间:Jul 03, 2025

PolarDB for PostgreSQL tidak menyediakan log undo. Kesalahan operasi dapat menyebabkan kehilangan data, seperti saat menjalankan pernyataan DROP TABLE. Fitur drop flashback pada PolarDB for PostgreSQL memungkinkan pemulihan cepat tabel yang dihapus, melihat isi tempat sampah, dan membersihkannya untuk mengembalikan data.

Prasyarat

Fitur ini didukung pada kluster PolarDB for PostgreSQL dengan mesin berikut:

  • PostgreSQL 11 (versi revisi 1.1.30 atau lebih baru)

  • PostgreSQL 14 (versi revisi 14.9.15.0 atau lebih baru)

Catatan

Eksekusi salah satu pernyataan berikut untuk memeriksa versi revisi kluster PolarDB for PostgreSQL:

  • PostgreSQL 11

    show polar_version;
  • PostgreSQL 14

    select version();

Peringatan

  • Aktifkan fitur drop flashback hanya saat menghapus tabel penting. Gunakan fitur ini dengan hati-hati dalam operasi rutin.

  • Saat fitur drop flashback diaktifkan, tabel yang dihapus dipindahkan ke mode tempat sampah dan tidak benar-benar dihapus. Ruang disk yang digunakan oleh tabel tersebut tidak dilepaskan, sehingga dapat meningkatkan penggunaan ruang disk jika banyak data menumpuk di tempat sampah. Bersihkan tempat sampah secara berkala.

  • Upaya untuk menghapus dependensi tabel yang dihapus mungkin gagal karena tabel tersebut masih ada dan menggunakan dependensinya.

  • Tabel yang dihapus dipindahkan ke mode recyclebin. Hindari membuat mode dengan nama recyclebin, karena tabel dalam mode recyclebin dapat dibersihkan menggunakan pernyataan purge recyclebin.

  • Saat fitur drop flashback diaktifkan, operasi berikut tidak didukung:

    • Tabel partisi dan tabel sementara yang dihapus tidak dapat dikembalikan karena dihapus secara permanen.

    • Pemicu acara sql_drop tidak didukung.

Parameter

Parameter

Tipe Data

Deskripsi

polar_enable_flashback_drop

BOOL

Menentukan apakah akan mengaktifkan fitur drop flashback. Nilai default: OFF. Nilai valid:

  • ON

  • OFF

Sintaksis

Fitur drop flashback mendukung pernyataan SQL berikut:

  • Delete a table

    drop table table_name;         # Pindahkan tabel ke ruang yang berjalan dalam mode tempat sampah.
    drop table table_name purge;   # Hapus tabel. Tabel tidak dapat dipulihkan.
  • Restore a deleted table

    flashback table table_name to before drop;                        # Pulihkan tabel yang dihapus. Jika ada tabel dengan nama yang sama, tabel terbaru yang dipulihkan.
    flashback table table_name to before drop rename to table_name_1; # Pulihkan dan ubah nama tabel yang dihapus.
  • Permanently delete files from the recycle bin

    purge table table_name;       
    Catatan

    Jika ada tabel dengan nama yang sama, tabel tertua akan dihapus.

  • Clear the recycle bin

    purge recyclebin;   
    Catatan

    Izin polar_super_user diperlukan untuk membersihkan tempat sampah.

  • View recycle bin information

    show recyclebin;      

Uji kinerja

  • Siapkan data untuk pengujian.

    Buat tabel test1 dan tabel test2, lalu masukkan data ke dalamnya.

    CREATE TABLE test1(id int primary key, name text);
    
    CREATE TABLE test2(id int primary key, name text);
    
    INSERT INTO test1 select t,repeat('test1',1024) from generate_series(1, 10000) as t;
    
    INSERT INTO test2 select t,repeat('test2',1024) from generate_series(1, 10000) as t;
    \dt

    Hasil contoh:

             Daftar relasi
     Skema | Nama  | Tipe  |  Pemilik
    --------+-------+-------+----------
     public | test1 | tabel | postgres
     public | test2 | tabel | postgres
    (2 baris)
  • Hapus tabel dan lihat tempat sampah.

    • Hapus tabel test1 dan test2.

      DROP TABLE test1;
      
      DROP TABLE test2;
      
      \dt

      Hasil contoh:

      Tidak menemukan relasi apa pun.
    • Lihat tempat sampah.

      show recyclebin;

      Hasil contoh:

       table_catalog |         table_name          | table_type
      ---------------+-----------------------------+------------
       postgres      | public$test1$69461331094004 | BASE TABLE
       postgres      | public$test2$69461332967609 | BASE TABLE
      (2 baris)
  • Kembalikan tabel yang dihapus.

    • Pulihkan tabel yang dihapus.

      FLASHBACK TABLE test1 TO BEFORE DROP;
      
      FLASHBACK TABLE test2 TO BEFORE DROP RENAME TO test3;
      
      \dt

      Hasil contoh:

         Daftar relasi
       Skema | Nama  | Tipe  |  Pemilik
      --------+-------+-------+----------
       public | test1 | tabel | postgres
       public | test3 | tabel | postgres
      (2 baris)
      Catatan

      Tabel test2 diubah namanya menjadi test3.

    • Lihat data yang dipulihkan.

      Lihat data dalam tabel test1.

      SELECT count(*) FROM test1;

      Hasil contoh:

       count
      -------
       10000
      (1 baris)

      Lihat data dalam tabel test3.

      SELECT count(*) FROM test3;

      Hasil contoh:

       count
      -------
       10000
      (1 baris)