すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:テーブル ゴミ箱

最終更新日:Mar 28, 2026

テーブル ゴミ箱は、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_FORCEFALSETRUE に設定すると、DROP TABLE 時にテーブルが即座に完全削除され、ゴミ箱をバイパスします。FALSE に設定すると、テーブルはゴミ箱に移動されます。
RECYCLE_BIN_EXPIRED_TIME259200000(3 日間)保存期間(ミリ秒単位)。この設定変更後に削除されたテーブルにのみ適用されます。ゴミ箱内に既に存在するテーブルは、元の保存期間を維持します。
ENABLE_RECYCLE_BIN_CLEAN_EXPIRED_TABLETRUEバックグラウンドのクリーンアップスレッドの有効/無効を切り替えます。トラブルシューティングが必要な場合を除き、無効化しないでください。
RECYCLE_BIN_CLEAN_EXPIRED_TABLE_INTERVAL60000(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 の出力結果(形式:ソースデータベース名_ソーステーブル名_タイムスタンプ)に従います。

特定のバージョンのテーブルの復元

削除されたテーブルの複数のバージョンがゴミ箱内に存在する場合、以下の手順で特定のバージョンを復元できます。

  1. ゴミ箱を照会して、すべてのバージョンとそのゴミ箱テーブル名を取得します。

    SHOW RECYCLE_BIN TABLE <ソーステーブル名>;
  2. recycledTime 列の値と tableName のタイムスタンプ接尾辞を比較し、目的のバージョンを特定します。

  3. そのゴミ箱名を用いて、特定のバージョンを復元してください。

    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;