Pernyataan DDL tidak dapat dikembalikan. Jika Anda secara tidak sengaja menghapus tabel saat menggunakan pernyataan DDL, data akan hilang dan tidak dapat dipulihkan. Untuk menyelesaikan masalah ini, AnalyticDB for MySQL menyediakan fitur recycle bin tabel yang memungkinkan Anda untuk menyimpan sementara tabel yang dihapus di dalam recycle bin tabel. Anda dapat mengonfigurasi periode retensi untuk recycle bin tabel guna membantu mengembalikan data yang terhapus secara tidak sengaja.
Prasyarat
Sebuah kluster AnalyticDB for MySQL versi V3.2.3.0 atau lebih baru telah dibuat.
Untuk melihat dan memperbarui versi minor dari kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Untuk melihat dan memperbarui versi minor dari kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Catatan penggunaan
Fitur recycle bin tabel hanya mendukung tabel internal AnalyticDB for MySQL dengan mesin tabel XUANWU atau XUANWU_V2. Fitur ini tidak mendukung tabel eksternal.
Jika Anda menjalankan pernyataan
DROP TABLEketika pernyataanINSERT OVERWRITE SELECTsedang dijalankan, tabel yang dihapus dipindahkan ke recycle bin tabel, dan pernyataanINSERT OVERWRITE SELECTgagal dijalankan.Jika Anda menjalankan pernyataan
DROP TABLEketika pernyataanBUILDsedang dijalankan, tabel yang dihapus dipindahkan ke recycle bin tabel, dan pernyataanBUILDdijalankan sesuai harapan.Tabel yang dipindahkan ke recycle bin tabel masih menggunakan penyimpanan disk.
Pengenalan fitur recycle bin tabel
Recycle bin tabel digunakan untuk menyimpan sementara tabel yang dihapus. Pada kali pertama Anda menjalankan pernyataan DROP, AnalyticDB for MySQL membuat database tersembunyi bernama ADB_RECYCLE_BIN dan memindahkan tabel yang dihapus ke database ADB_RECYCLE_BIN.
Mekanisme daur ulang
Tabel yang dihapus menggunakan pernyataan DROP TABLE secara otomatis dipindahkan ke recycle bin tabel.
Tabel yang dihapus secara paksa menggunakan pernyataan DROP TABLE ... FORCE langsung dihapus.
Periode retensi dan mekanisme pembersihan
Secara default, tabel yang dihapus disimpan selama tiga hari setelah dipindahkan ke recycle bin tabel. Setelah tiga hari, tabel yang tersimpan secara otomatis dihapus. Anda dapat mengonfigurasi periode retensi dan mekanisme pembersihan. Untuk informasi lebih lanjut, lihat bagian "Pengaturan recycle bin tabel" dari topik ini. Anda juga dapat menjalankan pernyataan PURGE untuk membersihkan recycle bin tabel. Untuk informasi lebih lanjut, lihat bagian "Hapus tabel dari recycle bin tabel" dari topik ini.
Pernyataan SQL yang didukung oleh recycle bin tabel
Untuk menjalankan pernyataan pada tabel di recycle bin tabel, Anda harus memiliki izin
DROPpada tabel sumber.Anda hanya dapat menjalankan pernyataan PURGE, RESTORE, dan SHOW pada tabel di recycle bin tabel.
Konvensi penamaan untuk tabel di recycle bin tabel
Tabel yang dipindahkan ke database ADB_RECYCLE_BIN dikumpulkan dari berbagai database. Untuk memastikan nama tabel unik, tabel di recycle bin tabel diberi nama dalam format berikut: NamaDatabaseSumber_NamaTabelSumber_Timestamp.
Sebagai contoh, seorang pengguna menghapus tabel bernama customer dari database adb_demo pada 00:00:00 tanggal 1 Januari 2024. Tabel customer diubah namanya menjadi adb_demo_customer_1704038400000 di recycle bin tabel.
Jika panjang nama tabel baru melebihi batas, nama tabel sumber dan nama database sumber secara otomatis dipotong secara berurutan. Dalam kasus ini, nama database sumber dan nama tabel sumber di nama tabel baru mungkin tidak lengkap.
Jika sebuah tabel sudah dipindahkan dari database ke recycle bin tabel dan tabel lain dengan nama yang sama dihapus dari database yang sama, tabel yang baru saja dihapus dipindahkan ke recycle bin tabel dan diubah namanya menggunakan timestamp yang berbeda.
Pengaturan recycle bin tabel
Anda dapat menjalankan pernyataan SET ADB_CONFIG untuk memodifikasi pengaturan recycle bin tabel. Tabel berikut menjelaskan parameter dalam pernyataan tersebut.
Parameter | Deskripsi |
DROP_FORCE | Menentukan apakah tabel dihapus secara permanen ketika Anda menjalankan pernyataan |
RECYCLE_BIN_EXPIRED_TIME | Periode retensi tabel setelah dipindahkan ke recycle bin tabel. Parameter ini tidak berlaku untuk tabel yang sudah ada di recycle bin tabel. Unit: milidetik. Nilai default: 259200000 (3 hari). Penting Untuk mencegah habisnya ruang penyimpanan disk, kami merekomendasikan Anda untuk menentukan periode retensi yang sesuai. |
ENABLE_RECYCLE_BIN_CLEAN_EXPIRED_TABLE | Menentukan apakah akan mengaktifkan fitur thread pembersihan asinkron untuk recycle bin tabel. Nilai default: TRUE. Penting Kami merekomendasikan Anda untuk tidak menonaktifkan fitur thread pembersihan asinkron. |
RECYCLE_BIN_CLEAN_EXPIRED_TABLE_INTERVAL | Interval waktu recycle bin tabel menjalankan thread pembersihan asinkron. Unit: milidetik. Nilai default: 60000. |
Kelola recycle bin tabel
Query tabel di recycle bin tabel
Sintaksis
Query semua tabel di recycle bin tabel.
SHOW RECYCLE_BIN ALL;Query informasi tentang tabel tertentu di recycle bin tabel. Beberapa tabel dengan nama database dan nama tabel yang sama mungkin dikembalikan.
SHOW RECYCLE_BIN TABLE <NamaDatabaseSumber>.<NamaTabelSumber>;Query informasi tentang tabel tertentu di recycle bin tabel. Beberapa tabel dengan nama tabel yang sama tetapi nama database berbeda mungkin dikembalikan.
SHOW RECYCLE_BIN TABLE <NamaTabelSumber>;Query semua tabel yang termasuk dalam database tertentu di recycle bin tabel.
SHOW RECYCLE_BIN DATABASE <NamaDatabaseSumber>;
Contoh
Query semua tabel di recycle bin tabel.
SHOW RECYCLE_BIN ALL;Hasil sampel:
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 | | testUser | ADB_RECYCLE_BIN | adb_demo_orders_1720086094102 | adb_demo | orders | 2024-07-04 17:41:37 | 2024-07-07 17:41:37 | | testUser | ADB_RECYCLE_BIN | testdb_customer_1720085752664 | testdb | customer | 2024-07-04 17:35:56 | 2024-07-07 17:35:56 | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+Query informasi tentang tabel adb_demo.customer di recycle bin tabel.
SHOW RECYCLE_BIN TABLE adb_demo.customer;Hasil sampel:
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+Query semua tabel dengan nama tabel sumber customer di recycle bin tabel.
SHOW RECYCLE_BIN TABLE customer;Hasil sampel:
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 | | testUser | ADB_RECYCLE_BIN | testdb_customer_1720085752664 | testdb | customer | 2024-07-04 17:35:56 | 2024-07-07 17:35:56 | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+Query semua tabel yang termasuk dalam database adb_demo di recycle bin tabel.
SHOW RECYCLE_BIN DATABASE adb_demo;Hasil sampel:
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | userName | schemaName | tableName | originSchemaName | originTableName | recycledTime | expiredTime | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ | testUser | ADB_RECYCLE_BIN | adb_demo_customer_1720086117277 | adb_demo | customer | 2024-07-04 17:42:00 | 2024-07-07 17:42:00 | | testUser | ADB_RECYCLE_BIN | adb_demo_orders_1720086094102 | adb_demo | orders | 2024-07-04 17:41:37 | 2024-07-07 17:41:37 | +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Kembalikan tabel dari recycle bin tabel
Aturan
Tabel yang dikembalikan menggunakan nama sebelum dipindahkan ke recycle bin tabel.
Jika Anda ingin mengembalikan tabel ke database sumber tetapi database tersebut berisi tabel lain dengan nama yang sama, Anda dapat mengganti nama, menghapus, atau memindahkan tabel yang ada di database ke database lain.
Jika Anda mengembalikan beberapa tabel dengan nama database dan nama tabel yang sama tetapi timestamp berbeda, AnalyticDB for MySQL mengembalikan tabel dengan timestamp terbaru dan kemudian melaporkan kesalahan untuk tabel lainnya. Dalam kasus ini, Anda dapat mengganti nama, menghapus, atau memindahkan tabel yang dikembalikan ke database lain.
Sintaksis
Kembalikan semua tabel dari recycle bin tabel ke database sumber.
RESTORE RECYCLE_BIN ALL;Kembalikan tabel tertentu dari recycle bin tabel ke database sumber.
RESTORE RECYCLE_BIN TABLE <Nama tabel di database ADB_RECYCLE_BIN>;
Contoh
Kembalikan tabel adb_demo_customer_1720086117277 dari recycle bin tabel.
RESTORE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;Hapus tabel dari recycle bin tabel
Sintaksis
Hapus semua tabel dari recycle bin tabel.
PURGE RECYCLE_BIN ALL;Hapus tabel tertentu dari recycle bin tabel.
PURGE RECYCLE_BIN TABLE <Nama tabel di database ADB_RECYCLE_BIN>;
Contoh
Hapus tabel adb_demo_customer_1720086117277 dari recycle bin tabel.
PURGE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;Ubah periode retensi tabel di recycle bin tabel
Sintaksis
Ubah periode retensi tabel di recycle bin tabel.
SET adb_config RECYCLE_BIN_EXPIRED_TIME=<Periode retensi tabel>;Setelah Anda mengubah periode retensi tabel, periode retensi baru hanya berlaku untuk tabel yang dihapus setelah perubahan. Periode retensi sebelumnya berlaku untuk tabel yang sudah ada di recycle bin tabel.
Contoh
Ubah periode retensi tabel di recycle bin tabel menjadi dua hari.
# Periode retensi dihitung menggunakan rumus berikut: 2 × 24 × 3600 × 1000 = 172800000. Unit: milidetik.
SET adb_config RECYCLE_BIN_EXPIRED_TIME=172800000;