Operasi bahasa definisi data (DDL) bersifat permanen dan tidak dapat dikembalikan. Kehilangan data dapat terjadi akibat operasi yang tidak disengaja, seperti saat pengguna menjalankan perintah DROP TABLE. PolarDB menyediakan fitur recycle bin tabel untuk menyimpan tabel yang dihapus secara sementara. Anda dapat menyesuaikan periode retensi untuk pemulihan tabel tersebut.
Fitur recycle bin tabel menggunakan kapasitas penyimpanan tambahan, yang mengakibatkan biaya penyimpanan. Sesuaikan periode retensi maksimum berdasarkan kebutuhan bisnis Anda.
Prasyarat
Kluster Anda harus menjalankan salah satu versi mesin database berikut. Untuk informasi lebih lanjut tentang cara memeriksa versi mesin database kluster, lihat Versi Mesin.
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.2 atau lebih baru.
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.1.0 atau lebih baru.
Fitur
Mendaur ulang dan membersihkan tabel
Mendaur ulang tabel
Saat menjalankan pernyataan
DROP TABLEuntuk menghapus tabel atau pernyataanDROP DATABASEuntuk menghapus basis data, PolarDB hanya menyimpan objek tabel yang dihapus dan memindahkannya ke direktori tertentu di recycle bin. Objek yang tidak terkait dengan objek tabel:Objek yang tidak terkait dengan tabel yang dihapus: Sistem akan menentukan apakah akan menyimpan objek berdasarkan pernyataan yang Anda jalankan. Objek ini tidak didaur ulang.
Objek yang melekat pada tabel dan dapat memodifikasi data tabel: Sistem menghapus objek ini, termasuk
triggersdanforeign keys.Statistik kolomdipindahkan ke recycle bin bersama dengan tabel, tetapi tidak dihapus.
Membersihkan tabel
Recycle bin memulai thread latar belakang untuk membersihkan tabel yang disimpan lebih lama dari periode waktu yang ditentukan oleh parameter recycle_bin_retention. Untuk tabel dengan jumlah data besar, sistem memulai thread latar belakang lain untuk membersihkan tabel ini secara asinkron.
Izin
Saat kluster PolarDB dimulai, basis data bernama
__recycle_bin__diinisialisasi sebagai basis data recycle bin. Basis data__recycle_bin__adalah basis data sistem yang tidak dapat dimodifikasi atau dihapus.Anda tidak dapat menjalankan pernyataan
DROP TABLEpada tabel di dalam recycle bin. Namun, Anda dapat menjalankan pernyataancall dbms_recycle.purge_table('nama tabel');untuk membersihkan tabel ini.CatatanAkun yang digunakan untuk membersihkan tabel harus memiliki izin DROP pada tabel asli dan tabel di dalam recycle bin.
Cara memberi nama tabel di dalam recycle bin
Recycle bin memindahkan tabel dari basis data yang berbeda ke basis data
__recycle_bin__. Tabel yang didaur ulang diberi nama dalam format unik untuk memastikan identitasnya."__" + <Storage Engine> + <SE private id>Tabel berikut menjelaskan parameter.
Parameter
Deskripsi
Storage EngineNama mesin penyimpanan.
SE private idNilai unik yang dihasilkan oleh mesin penyimpanan untuk mengidentifikasi tabel. Sebagai contoh, nilai parameter ini di InnoDB adalah
table id.Pendauran ulang independen
Sebagai contoh, Anda dapat menentukan periode retensi 7 hari untuk recycle bin node utama dan periode retensi 14 hari untuk recycle bin node baca-saja.
CatatanRuang penyimpanan untuk recycle bin bergantung pada periode retensi yang Anda tentukan.
Peringatan
Jika basis data
__recycle_bin__dan tabel yang ingin Anda daur ulang berada di sistem file yang berbeda, operasiDROP TABLEmemindahkan file di antara tablespace, yang memakan waktu.Jika tabel yang ingin Anda daur ulang berada di tablespace
generalyang menyimpan beberapa tabel, file tablespace tidak dipindahkan saat Anda mendaur ulang salah satu tabel.
Penagihan
Fitur recycle bin tabel menggunakan kapasitas penyimpanan kluster, yang mengakibatkan biaya penyimpanan. Untuk informasi lebih lanjut, lihat Aturan penagihan untuk penyimpanan.
Penggunaan
Konfigurasikan parameter loose_recycle_bin untuk mengaktifkan atau menonaktifkan recycle bin. Setelah diaktifkan, data didaur ulang sesuai aturan untuk mendaur ulang tabel. Secara default, tabel tidak dibersihkan. Kami merekomendasikan untuk mengaktifkan pembersihan tabel guna menghindari biaya penyimpanan tambahan yang disebabkan oleh data di dalam recycle bin.
Parameter loose_recycle_scheduler mengontrol fitur pembersihan tabel. Jika pembersihan tabel dinonaktifkan, parameter loose_recycle_bin_retention diabaikan dan data tetap berada di dalam recycle bin tanpa dihapus secara otomatis.
Parameter | Level | Deskripsi |
loose_recycle_bin | Global dan sesi | Menentukan apakah akan mengaktifkan recycle bin. Nilai default: OFF. Nilai valid:
|
loose_recycle_scheduler | Global | Menentukan apakah akan mengaktifkan thread yang digunakan untuk membersihkan recycle bin secara asinkron. Nilai default: OFF. Nilai valid:
|
loose_recycle_bin_retention | Global | Periode retensi maksimum untuk data di dalam recycle bin. Nilai valid: 86400 hingga 1209600. Unit: detik. Nilai default: 604800. Nilai 1209600 setara dengan 14 hari, dan 604800 setara dengan 7 hari. Penting
|
Mengelola recycle bin
PolarDB menyediakan pernyataan berikut untuk mengelola recycle bin:
show_tables
Anda dapat menjalankan pernyataan berikut untuk melihat semua tabel yang disimpan sementara di dalam recycle bin:
call dbms_recycle.show_tables()Contoh:
call dbms_recycle.show_tables(); +-----------------+---------------+---------------+--------------+---------------------+---------------------+ | SCHEMA | TABLE | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME | PURGE_TIME | +-----------------+---------------+---------------+--------------+---------------------+---------------------+ | __recycle_bin__ | __innodb_1063 | product_db | t1 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | __recycle_bin__ | __innodb_1064 | product_db | t2 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | __recycle_bin__ | __innodb_1065 | product_db | parent | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | __recycle_bin__ | __innodb_1066 | product_db | child | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | +-----------------+---------------+---------------+--------------+---------------------+---------------------+ 4 rows in set (0.00 sec)Tabel berikut menjelaskan parameter.
Parameter
Deskripsi
SCHEMASkema recycle bin.
TABLENama tabel setelah tabel dipindahkan ke recycle bin.
ORIGIN_SCHEMASkema tabel asli sebelum tabel dipindahkan ke recycle bin.
ORIGIN_TABLENama asli tabel.
RECYCLED_TIMEWaktu saat tabel dipindahkan ke recycle bin.
PURGE_TIMEPerkiraan waktu saat tabel dibersihkan dari recycle bin.
purge_table
Metode ini digunakan untuk menghapus tabel secara manual dari recycle bin.
call dbms_recycle.purge_table('NAMA_TABEL')CatatanParameter
NAMA_TABELmenentukan nama tabel setelah tabel dipindahkan ke recycle bin.Akun yang digunakan untuk membersihkan tabel harus memiliki izin DROP pada tabel asli dan tabel di dalam recycle bin.
Contoh:
mysql> call dbms_recycle.purge_table('__innodb_1063');restore_table
Anda dapat menjalankan pernyataan berikut untuk memulihkan tabel dari recycle bin:
call dbms_recycle.restore_table('RECYCLE_TABLE','DEST_DB','DEST_TABLE');CatatanHanya kluster PolarDB for MySQL Edisi Kluster 8.0 dengan versi revisi 8.0.1.1.12 atau lebih baru yang mengizinkan Anda memulihkan tabel dari recycle bin dengan menjalankan pernyataan
restore_table. Untuk informasi lebih lanjut tentang cara memeriksa versi, lihat Memeriksa versi mesin.Untuk menjalankan pernyataan di atas, akun Anda harus memiliki izin ALTER_ACL dan DROP_ACL pada basis data
__recycle_bin__dan izin CREATE_ACL dan INSERT_ACL pada tabel tujuan.
Tabel berikut menjelaskan parameter.
Parameter
Deskripsi
TABEL_RECYCLENama tabel yang ingin Anda pulihkan dari recycle bin.
CatatanJika Anda hanya menentukan parameter ini, data tabel asli dipulihkan.
DEST_DBBasis data tujuan untuk tabel yang ingin Anda pulihkan.
DEST_TABLENama baru untuk tabel yang dipulihkan.
Contoh:
call dbms_recycle.restore_table('__innodb_1063','testDB','testTable');
Hubungi kami
Jika Anda memiliki pertanyaan tentang operasi DDL, hubungi kami.