Keranjang daur ulang tabel melindungi dari kehilangan data akibat pernyataan DROP TABLE yang tidak disengaja. Tabel yang di-drop dipindahkan ke database tersembunyi bernama ADB_RECYCLE_BIN dan disimpan selama tiga hari secara default, memberi Anda waktu untuk memulihkannya sebelum dihapus secara permanen.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster AnalyticDB for MySQL yang berjalan pada V3.2.3.0 atau versi lebih baru
Untuk melakukan peningkatan versi minor, hubungi dukungan teknis. Untuk kluster Edisi Data Warehouse, lihat Update the minor version of a cluster.
Batasan
-
Jenis tabel yang didukung: hanya tabel internal dengan engine XUANWU atau XUANWU_V2. Tabel eksternal tidak didukung.
-
Tabel dalam keranjang daur ulang tetap mengonsumsi penyimpanan disk.
-
Menjalankan
DROP TABLEsaatINSERT OVERWRITE SELECTsedang berjalan akan memindahkan tabel ke keranjang daur ulang dan menyebabkan pernyataanINSERT OVERWRITE SELECTgagal. -
Menjalankan
DROP TABLEsaatBUILDsedang berjalan akan memindahkan tabel ke keranjang daur ulang tanpa mengganggu pernyataanBUILD. -
Untuk menjalankan pernyataan apa pun terkait keranjang daur ulang (SHOW, RESTORE, PURGE), Anda harus memiliki izin
DROPpada tabel sumber. Hanya pernyataan PURGE, RESTORE, dan SHOW yang didukung untuk tabel dalam keranjang daur ulang.
Cara kerja
Saat pertama kali Anda menjalankan pernyataan DROP TABLE, AnalyticDB for MySQL membuat database tersembunyi bernama ADB_RECYCLE_BIN dan memindahkan tabel yang di-drop ke sana. Pernyataan DROP TABLE berikutnya juga akan memindahkan tabel ke database yang sama.
DROP TABLE ... FORCE menghapus tabel secara permanen dan melewati keranjang daur ulang.
Periode retensi dan mekanisme pembersihan
Setelah masuk ke keranjang daur ulang, tabel disimpan selama tiga hari secara default dan dihapus secara otomatis setelah periode retensi berakhir. Anda dapat menyesuaikan periode retensi dengan mengonfigurasi RECYCLE_BIN_EXPIRED_TIME.
-
Pembersihan otomatis setelah periode retensi berakhir: Tabel dalam keranjang daur ulang yang melebihi periode retensi (RECYCLE_BIN_EXPIRED_TIME) akan dihapus secara otomatis.
-
Pembersihan otomatis saat batas jumlah tabel tercapai: Pada versi V3.2.3.6, V3.2.4.3, V3.2.5.0, dan versi lebih baru, jika jumlah tabel telah mencapai batas maksimum saat pembuatan tabel baru, sistem secara otomatis menghapus tabel dalam keranjang daur ulang yang masa kedaluwarsanya paling dekat. Satu tabel harus dihapus sebelum tabel baru dapat dibuat.
CatatanTabel mana yang dihapus secara otomatis oleh keranjang daur ulang?
Misalnya, keranjang daur ulang berisi satu tabel yang kedaluwarsa besok dan satu tabel lain yang kedaluwarsa lusa. Tabel yang kedaluwarsa besok akan dihapus terlebih dahulu.
-
Pembersihan manual: Anda dapat menjalankan
PURGEsecara manual untuk membersihkan keranjang daur ulang. Untuk detailnya, lihat Delete tables from the recycle bin.
Konvensi penamaan
Tabel dari berbagai database disimpan dalam satu keranjang daur ulang. Untuk memastikan nama unik, setiap tabel diberi nama ulang menggunakan format SourceDatabaseName_SourceTableName_Timestamp.
Contoh: Tabel customer dari database adb_demo, yang di-drop pada 1 Januari 2024 pukul 00:00:00, diberi nama ulang menjadi adb_demo_customer_1704038400000.
-
Jika panjang gabungan nama melebihi batas maksimum, nama database sumber dan nama tabel akan dipotong secara berurutan dan mungkin tampak tidak lengkap.
-
Jika nama tabel yang sama di-drop lagi dari database yang sama, tabel tersebut akan disimpan dengan timestamp berbeda.
Konfigurasi keranjang daur ulang
Gunakan SET ADB_CONFIG untuk mengonfigurasi keranjang daur ulang.
| Parameter | Default | Deskripsi |
|---|---|---|
DROP_FORCE |
FALSE |
Atur ke TRUE untuk menghapus tabel secara permanen saat menjalankan DROP TABLE, melewati keranjang daur ulang. Atur ke FALSE untuk memindahkan tabel ke keranjang daur ulang. |
RECYCLE_BIN_EXPIRED_TIME |
259200000 (3 hari) |
Periode retensi dalam milidetik. Hanya berlaku untuk tabel yang di-drop setelah pengaturan ini diubah. Tabel yang sudah ada di keranjang daur ulang tetap mempertahankan periode retensi aslinya. |
ENABLE_RECYCLE_BIN_CLEAN_EXPIRED_TABLE |
TRUE |
Aktifkan atau nonaktifkan thread pembersihan latar belakang. Jangan nonaktifkan kecuali diperlukan untuk troubleshooting. |
RECYCLE_BIN_CLEAN_EXPIRED_TABLE_INTERVAL |
60000 (60 detik) |
Interval dalam milidetik saat thread pembersihan dijalankan. |
RECYCLE_BIN_TABLE_COUNT_LIMIT_RATIO |
1.0 |
(V3.2.5.2 dan versi lebih baru) Rasio jumlah tabel dalam keranjang daur ulang terhadap batas total jumlah tabel. Jika rasio melebihi nilai ini, sistem secara otomatis membersihkan tabel yang paling baru ditambahkan ke keranjang daur ulang. Untuk informasi lebih lanjut, lihat Usage limits. Penting
Thread pembersihan menggunakan ambang batas yang lebih kecil dari hasil perhitungan antara |
RECYCLE_BIN_TABLE_COUNT_LIMIT |
5000 |
(V3.2.5.2 dan versi lebih baru) Jumlah maksimum tabel yang dapat disimpan dalam keranjang daur ulang. Jika jumlah melebihi nilai ini, sistem secara otomatis membersihkan tabel yang paling baru ditambahkan. |
Mengubah periode retensi
SET adb_config RECYCLE_BIN_EXPIRED_TIME=<RetentionPeriodInMilliseconds>;
Periode retensi baru hanya berlaku untuk tabel yang di-drop setelah perubahan ini dilakukan. Tabel yang sudah ada di keranjang daur ulang tetap mempertahankan waktu kedaluwarsa aslinya.
Contoh: Atur periode retensi menjadi dua hari:
-- 2 hari = 2 × 24 × 3600 × 1000 = 172.800.000 ms
SET adb_config RECYCLE_BIN_EXPIRED_TIME=172800000;
Kueri tabel dalam keranjang daur ulang
Sintaks
-- Menampilkan semua tabel dalam keranjang daur ulang
SHOW RECYCLE_BIN ALL;
-- Menampilkan tabel dari database sumber dan nama tabel tertentu
SHOW RECYCLE_BIN TABLE <SourceDatabaseName>.<SourceTableName>;
-- Menampilkan tabel berdasarkan nama tabel sumber (di semua database)
SHOW RECYCLE_BIN TABLE <SourceTableName>;
-- Menampilkan semua tabel dari database sumber tertentu
SHOW RECYCLE_BIN DATABASE <SourceDatabaseName>;
Contoh
Tampilkan daftar semua tabel di Keranjang daur ulang:
SHOW RECYCLE_BIN ALL;+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| 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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Menampilkan tabel tertentu dari `adb_demo.customer`:
SHOW RECYCLE_BIN TABLE adb_demo.customer;+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| 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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Menampilkan semua versi tabel `customer` di semua database:
SHOW RECYCLE_BIN TABLE customer;+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| 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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Menampilkan semua tabel dari database `adb_demo`:
SHOW RECYCLE_BIN DATABASE adb_demo;+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
| 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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+
Memulihkan tabel dari keranjang daur ulang
Aturan pemulihan
-
Tabel yang dipulihkan menggunakan nama aslinya sebelum di-drop.
-
Jika database sumber sudah berisi tabel dengan nama yang sama, ganti nama, hapus, atau pindahkan tabel tersebut sebelum memulihkan.
-
Jika beberapa versi tabel ada dalam keranjang daur ulang (database sumber dan nama tabel sama, timestamp berbeda),
RESTORE RECYCLE_BIN ALLmemulihkan versi dengan timestamp terbaru dan melaporkan error untuk versi lainnya.
Sintaks
-- Memulihkan semua tabel ke database sumbernya
RESTORE RECYCLE_BIN ALL;
-- Memulihkan tabel tertentu menggunakan nama keranjang daur ulangnya
RESTORE RECYCLE_BIN TABLE <RecycleBinTableName>;
<RecycleBinTableName> adalah nama yang ditampilkan di kolom tableName pada output SHOW RECYCLE_BIN (format: SourceDatabaseName_SourceTableName_Timestamp).
Memulihkan versi tertentu dari sebuah tabel
Saat beberapa versi tabel yang di-drop ada dalam keranjang daur ulang, ikuti langkah-langkah berikut untuk memulihkan versi tertentu:
-
Kueri keranjang daur ulang untuk menemukan semua versi dan nama keranjang daur ulangnya:
SHOW RECYCLE_BIN TABLE <SourceTableName>; -
Identifikasi versi target dengan membandingkan kolom
recycledTimedengan sufiks timestamp padatableName. -
Pulihkan versi tertentu menggunakan nama keranjang daur ulangnya:
RESTORE RECYCLE_BIN TABLE <RecycleBinTableName>;
Contoh: Untuk memulihkan tabel customer seperti kondisinya sebelum di-drop pada 2024-07-04 17:42:00:
RESTORE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;
Hapus tabel dari keranjang daur ulang
Gunakan PURGE untuk menghapus tabel dari keranjang daur ulang secara permanen sebelum masa kedaluwarsanya tiba.
Sintaks
-- Menghapus semua tabel dari keranjang daur ulang secara permanen
PURGE RECYCLE_BIN ALL;
-- Menghapus tabel tertentu dari keranjang daur ulang secara permanen
PURGE RECYCLE_BIN TABLE <RecycleBinTableName>;
Contoh
Hapus secara permanen tabel adb_demo_customer_1720086117277:
PURGE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;