テーブル ゴミ箱は、DROP TABLE 文による誤ったデータ損失から保護します。削除されたテーブルは、ADB_RECYCLE_BIN という名前の非表示データベースに移動し、デフォルトで 3 日間保持されます。この期間中に復元することで、テーブルの完全な削除を回避できます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
AnalyticDB for MySQL クラスター(バージョン 3.2.3.0 以降)が実行中であること
Data Lakehouse Edition クラスターのマイナーバージョンを確認するには、SELECT adb_version(); を実行します。マイナーバージョンをスペックアップするには、テクニカルサポートに連絡してください。Data Warehouse Edition クラスターの場合は、「クラスターのマイナーバージョンを更新する」をご参照ください。
制限事項
対応するテーブルタイプ:エンジンが XUANWU または XUANWU_V2 の内部テーブルのみ。外部テーブルは対応していません。
ゴミ箱内のテーブルは、引き続きディスクストレージを消費します。
DROP TABLEを実行中にINSERT OVERWRITE SELECTが進行中の場合、対象テーブルはゴミ箱に移動され、INSERT OVERWRITE SELECT文は失敗します。DROP TABLEを実行中にBUILDが進行中の場合、対象テーブルはゴミ箱に移動されますが、BUILD文は中断されません。ゴミ箱に関する任意の文(SHOW、RESTORE、PURGE)を実行するには、ソーステーブルに対する DROP 権限が必要です。ゴミ箱内のテーブルに対しては、PURGE、RESTORE、
SHOW文のみがサポートされています。
仕組み
DROP TABLE 文を初めて実行すると、AnalyticDB for MySQL は ADB_RECYCLE_BIN という名前の非表示データベースを作成し、削除されたテーブルをそこに移動します。その後の DROP TABLE 文でも、テーブルは同一のデータベースに移動されます。
DROP TABLE ... FORCE は、テーブルを即座に完全削除し、ゴミ箱をバイパスします。
保存期間とクリーンアップ
デフォルトでは、テーブルはゴミ箱内で 3 日間(259,200,000 ミリ秒)保持されます。保存期間が経過すると、AnalyticDB for MySQL は 60 秒ごとに実行されるバックグラウンドのクリーンアップスレッドによって、自動的にテーブルを削除します。また、PURGE 文を実行することで、ゴミ箱を手動でクリーンアップすることもできます。詳細については、「ゴミ箱からのテーブル削除」セクションをご参照ください。
ディスクストレージの枯渇を防ぐため、適切な保存期間を設定してください。
命名規則
異なるデータベースからのテーブルは、単一のゴミ箱に格納されます。名前の重複を避けるため、各テーブルは ソースデータベース名_ソーステーブル名_タイムスタンプ の形式でリネームされます。
例: 2024 年 1 月 1 日 00:00:00 に adb_demo データベースから削除された customer テーブルは、adb_demo_customer_1704038400000 とリネームされます。
結合後の名前が最大長を超える場合、ソースデータベース名およびソーステーブル名は順次切り捨てられ、不完全な状態で表示されることがあります。
同一のデータベースから同一のテーブル名が再び削除された場合、異なるタイムスタンプで別個に格納されます。
ゴミ箱の設定
SET ADB_CONFIG を使用して、ゴミ箱を設定します。
| パラメーター | デフォルト | 説明 |
|---|---|---|
DROP_FORCE | FALSE | TRUE に設定すると、DROP TABLE 時にテーブルが即座に完全削除され、ゴミ箱をバイパスします。FALSE に設定すると、テーブルはゴミ箱に移動されます。 |
RECYCLE_BIN_EXPIRED_TIME | 259200000(3 日間) | 保存期間(ミリ秒単位)。この設定変更後に削除されたテーブルにのみ適用されます。ゴミ箱内に既に存在するテーブルは、元の保存期間を維持します。 |
ENABLE_RECYCLE_BIN_CLEAN_EXPIRED_TABLE | TRUE | バックグラウンドのクリーンアップスレッドの有効/無効を切り替えます。トラブルシューティングが必要な場合を除き、無効化しないでください。 |
RECYCLE_BIN_CLEAN_EXPIRED_TABLE_INTERVAL | 60000(60 秒) | クリーンアップスレッドの実行間隔(ミリ秒単位)です。 |
保存期間の変更
SET adb_config RECYCLE_BIN_EXPIRED_TIME=<保存期間(ミリ秒)>;新しい保存期間は、この変更後に削除されたテーブルにのみ適用されます。ゴミ箱内に既に存在するテーブルは、元の有効期限を維持します。
例: 保存期間を 2 日間に設定する場合:
-- 2 日 = 2 × 24 × 3600 × 1000 = 172,800,000 ミリ秒
SET adb_config RECYCLE_BIN_EXPIRED_TIME=172800000;ゴミ箱内のテーブルの照会
構文
-- ゴミ箱内のすべてのテーブルを一覧表示
SHOW RECYCLE_BIN ALL;
-- 特定のソースデータベースおよびソーステーブル名を持つテーブルを一覧表示
SHOW RECYCLE_BIN TABLE <ソースデータベース名>.<ソーステーブル名>;
-- ソーステーブル名(すべてのデータベース横断)でテーブルを一覧表示
SHOW RECYCLE_BIN TABLE <ソーステーブル名>;
-- 特定のソースデータベースからのすべてのテーブルを一覧表示
SHOW RECYCLE_BIN DATABASE <ソースデータベース名>;実行例
ゴミ箱内のすべてのテーブルを一覧表示:
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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+`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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+すべてのデータベースから `customer` テーブルのすべてのバージョンを一覧表示:
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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+`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 |
+----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+ゴミ箱からのテーブル復元
復元ルール
復元されたテーブルは、削除前の元の名前を使用します。
ソースデータベースにすでに同名のテーブルが存在する場合は、復元前にそのテーブルをリネーム、削除、または移動してください。
ゴミ箱内に同一のソースデータベースおよびソーステーブル名を持つ複数のバージョン(異なるタイムスタンプ)が存在する場合、
RESTORE RECYCLE_BIN ALLは最新のタイムスタンプを持つバージョンを復元し、残りのバージョンについてはエラーを報告します。
構文
-- すべてのテーブルをソースデータベースに復元
RESTORE RECYCLE_BIN ALL;
-- ゴミ箱内のテーブル名を指定して特定のテーブルを復元
RESTORE RECYCLE_BIN TABLE <ゴミ箱テーブル名>;<ゴミ箱テーブル名> は、tableName 列に表示される名前であり、SHOW RECYCLE_BIN の出力結果(形式:ソースデータベース名_ソーステーブル名_タイムスタンプ)に従います。
特定のバージョンのテーブルの復元
削除されたテーブルの複数のバージョンがゴミ箱内に存在する場合、以下の手順で特定のバージョンを復元できます。
ゴミ箱を照会して、すべてのバージョンとそのゴミ箱テーブル名を取得します。
SHOW RECYCLE_BIN TABLE <ソーステーブル名>;recycledTime列の値とtableNameのタイムスタンプ接尾辞を比較し、目的のバージョンを特定します。そのゴミ箱名を用いて、特定のバージョンを復元してください。
RESTORE RECYCLE_BIN TABLE <ゴミ箱テーブル名>;
例: 2024 年 7 月 4 日 17:42:00 に削除された customer テーブルを復元する場合:
RESTORE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;ゴミ箱からのテーブル削除
PURGE を使用して、有効期限が切れる前にゴミ箱内のテーブルを完全に削除できます。
構文
-- ゴミ箱内のすべてのテーブルを完全に削除
PURGE RECYCLE_BIN ALL;
-- ゴミ箱内の特定のテーブルを完全に削除
PURGE RECYCLE_BIN TABLE <ゴミ箱テーブル名>;実行例
adb_demo_customer_1720086117277 テーブルを完全に削除する場合:
PURGE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;