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

AnalyticDB:テーブルのゴミ箱

最終更新日:Aug 06, 2026

テーブルのゴミ箱は、DROP TABLE 文による偶発的なデータ損失からデータを保護します。ドロップされたテーブルは ADB_RECYCLE_BIN という名前の非表示のデータベースに移動され、デフォルトで 3 日間保持されます。これにより、完全に削除される前にテーブルを回復する時間が確保されます。

前提条件

開始する前に、以下が満たされていることを確認してください。

  • V3.2.3.0 以降を実行している AnalyticDB for MySQL クラスター

説明

マイナーバージョンをアップグレードするには、テクニカルサポートにご連絡ください。Data Warehouse エディションのクラスターについては、「クラスターのマイナーバージョンを更新する」をご参照ください。

制限事項

  • サポートされるテーブルタイプ:エンジンが 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 日間保持され、保存期間が過ぎると自動的に削除されます。RECYCLE_BIN_EXPIRED_TIME を設定することで、保存期間をカスタマイズできます。

  • 保存期間が過ぎた後の自動クリーンアップ:ゴミ箱内のテーブルで保存期間 (RECYCLE_BIN_EXPIRED_TIME) を超えたものは自動的に削除されます。

  • テーブル数の上限に達した場合の自動クリーンアップ:V3.2.3.6、V3.2.4.3、V3.2.5.0 以降のバージョンでは、テーブル作成時にテーブル数がすでに上限に達している場合、システムはゴミ箱内で最も有効期限が近いテーブルを自動的に削除します。新しいテーブルを作成する前に、1 つのテーブルを削除する必要があります。

    説明

    ゴミ箱はどのテーブルを自動的に削除しますか?

    ゴミ箱に明日期限切れになるテーブルと明後日期限切れになるテーブルが 1 つずつあるとします。明日期限切れになるテーブルが先に削除されます。

  • 手動クリーンアップ:手動で PURGE を実行してゴミ箱をクリーンアップできます。詳細については、「ゴミ箱からテーブルを削除する」をご参照ください。

命名規則

異なるデータベースのテーブルは、1 つのゴミ箱に保存されます。一意の名前を保証するために、各テーブルは SourceDatabaseName_SourceTableName_Timestamp のフォーマットで名前が変更されます。

例:adb_demo データベースの customer テーブルが 2024 年 1 月 1 日 00:00:00 にドロップされた場合、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 秒) クリーンアップスレッドが実行される間隔 (ミリ秒単位)。
RECYCLE_BIN_TABLE_COUNT_LIMIT_RATIO 1.0

(V3.2.5.2 以降) テーブル総数の上限に対する、ゴミ箱内のテーブル数の比率。この比率を超えると、システムはゴミ箱内で最も最近追加されたテーブルを自動的にクリーンアップします。詳細については、「使用制限」をご参照ください。

重要

クリーンアップスレッドは、RECYCLE_BIN_TABLE_COUNT_LIMIT_RATIO と RECYCLE_BIN_TABLE_COUNT_LIMIT から計算されたしきい値のうち、小さい方を使用して、ゴミ箱をいつクリーンアップするかを決定します。

RECYCLE_BIN_TABLE_COUNT_LIMIT 5000 (V3.2.5.2 以降) ゴミ箱に保存できるテーブルの最大数。この数を超えると、システムは最も最近追加されたテーブルを自動的にクリーンアップします。

保存期間の変更

SET adb_config RECYCLE_BIN_EXPIRED_TIME=<RetentionPeriodInMilliseconds>;
重要

新しい保存期間は、この変更後にドロップされたテーブルにのみ適用されます。ゴミ箱に既にあるテーブルは、元の有効期限を保持します。

例:保存期間を 2 日に設定します。

-- 2 日 = 2 × 24 × 3600 × 1000 = 172,800,000 ms
SET adb_config RECYCLE_BIN_EXPIRED_TIME=172800000;

ゴミ箱内のテーブルのクエリ

構文

-- ゴミ箱内のすべてのテーブルを一覧表示
SHOW RECYCLE_BIN ALL;

-- 特定のソースデータベースとテーブル名のテーブルを一覧表示
SHOW RECYCLE_BIN TABLE <SourceDatabaseName>.<SourceTableName>;

-- ソーステーブル名でテーブルを一覧表示 (すべてのデータベースを対象)
SHOW RECYCLE_BIN TABLE <SourceTableName>;

-- 特定のソースデータベースのすべてのテーブルを一覧表示
SHOW RECYCLE_BIN DATABASE <SourceDatabaseName>;

例

ゴミ箱内のすべてのテーブルを一覧表示:

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 <RecycleBinTableName>;

<RecycleBinTableName> は、SHOW RECYCLE_BIN の出力の tableName 列に表示される名前です (フォーマット:SourceDatabaseName_SourceTableName_Timestamp)。

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

ドロップされたテーブルの複数のバージョンがゴミ箱に存在する場合、次の手順で特定のバージョンを復元します。

  1. ゴミ箱をクエリして、すべてのバージョンとそのゴミ箱での名前を検索します。

    SHOW RECYCLE_BIN TABLE <SourceTableName>;
  2. recycledTime 列と tableName のタイムスタンプサフィックスを比較して、対象のバージョンを特定します。

  3. ゴミ箱での名前を使用して、特定のバージョンを復元します。

    RESTORE RECYCLE_BIN TABLE <RecycleBinTableName>;

例:2024-07-04 17:42:00 のドロップ前の状態に customer テーブルを復元するには、次のようにします。

RESTORE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;

ゴミ箱からのテーブルの削除

PURGE を使用して、有効期限が切れる前にゴミ箱からテーブルを完全に削除します。

構文

-- ゴミ箱からすべてのテーブルを完全に削除
PURGE RECYCLE_BIN ALL;

-- ゴミ箱から特定のテーブルを完全に削除
PURGE RECYCLE_BIN TABLE <RecycleBinTableName>;

例

adb_demo_customer_1720086117277 テーブルを完全に削除します。

PURGE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;