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

AnalyticDB:テーブルのごみ箱

最終更新日:Nov 19, 2024

DDLステートメントはロールバックできません。 DDLステートメントを使用しているときに誤ってテーブルを削除した場合、データが失われ、復元できません。 この問題を解決するために、AnalyticDB for MySQLは、削除されたテーブルをテーブルごみ箱に一時的に保存できるテーブルごみ箱機能を提供します。 誤って削除されたデータを復元するために、テーブルのごみ箱の保持期間を設定できます。

前提条件

V3.2.3.0以降のAnalyticDB for MySQLクラスターが作成されます。

説明

AnalyticDB for MySQLのマイナーバージョンを照会するには

Data Lakehouse Editionクラスターで、SELECT adb_version(); 文を実行します。 クラスターのマイナーバージョンを更新するには、テクニカルサポートにお問い合わせください。

AnalyticDB For MySQL Data Warehouse Editionクラスターのマイナーバージョンを表示および更新する方法については、「クラスターのマイナーバージョンの更新」をご参照ください。

使用上の注意

  • テーブルごみ箱機能は、テーブルエンジンがXUANWUまたはXUANWU_V2であるAnalyticDB for MySQL内部テーブルのみをサポートします。 テーブルごみ箱機能は外部テーブルをサポートしていません。

  • INSERT OVERWRITE SELECTステートメントの実行中にDROP TABLEステートメントを実行すると、削除されたテーブルはテーブルのごみ箱に移動され、INSERT OVERWRITE SELECTステートメントの実行に失敗します。

  • BUILDステートメントの実行中にDROP TABLEステートメントを実行すると、削除されたテーブルがテーブルのごみ箱に移動され、BUILDステートメントが期待どおりに実行されます。

  • テーブルごみ箱に移動されたテーブルは、ディスクストレージを使用します。

テーブルのごみ箱の紹介

テーブルごみ箱は、削除されたテーブルを一時的に保存するために使用されます。 DROPステートメントを初めて実行すると、AnalyticDB for MySQLADB_RECYCLE_BINという名前の隠しデータベースを作成し、削除されたテーブルをADB_RECYCLE_BINデータベースに移動します。

リサイクルメカニズム

DROP TABLEステートメントを使用して削除されたテーブルは、テーブルのごみ箱に自動的に移動されます。

重要

DROP TABLEを使用して強制的に削除されたテーブル... FORCE文は直接削除されます。

保持期間とクリーンアップメカニズム

デフォルトでは、削除されたテーブルは、テーブルのごみ箱に移動してから3日間保持されます。 3日後、保持されたテーブルは自動的に削除されます。 保持期間とクリーンアップメカニズムを設定できます。 詳細については、このトピックの「テーブルのごみ箱設定」セクションを参照してください。 PURGEステートメントを実行して、テーブルのごみ箱をクリーンアップすることもできます。 詳細については、このトピックの「テーブルのごみ箱からテーブルを削除する」を参照してください。

テーブルのごみ箱でサポートされているSQL文

  • テーブルのごみ箱内のテーブルに対してステートメントを実行するには、DROPアクセス許可がソーステーブルに対して必要です。

  • 実行できるのは、 [PURGE][RESTORE] 、および [SHOW] 文だけです。

テーブルごみ箱内のテーブルの命名規則

ADB_RECYCLE_BINデータベースに移動されたテーブルは、異なるデータベースから収集されます。 一意のテーブル名を確保するために、テーブルのごみ箱内のテーブルの名前は、SourceDatabaseName_SourceTableName_Timestampの形式で指定されます。

たとえば、ユーザーが2024年1月1日00:00:00にadb_demoデータベースからcustomerという名前のテーブルを削除したとします。 顧客テーブルは、テーブルのごみ箱でadb_demo_customer_1704038400000に名前が変更されます。

説明
  • 新しいテーブル名の長さが制限を超えると、ソーステーブルとソースデータベースの名前は自動的に順番に切り捨てられます。 この場合、新しいテーブル名のソースデータベース名とソーステーブル名が不完全な場合があります。

  • テーブルがすでにデータベースからテーブルごみ箱に移動されていて、同じ名前の別のテーブルが同じデータベースから削除されている場合、最近削除されたテーブルはテーブルごみ箱に移動され、別のタイムスタンプを使用して名前が変更されます。

テーブルごみ箱の設定

SET ADB_CONFIG文を実行して、テーブルのごみ箱の設定を変更できます。 次の表に、ステートメントのパラメーターを示します。

パラメーター

説明

ドロップ_力

DROPステートメントの実行時にテーブルを完全に削除するかどうかを指定します。 このパラメーターをFALSEに設定すると、テーブルはテーブルのごみ箱に移動されます。 このパラメーターをTRUEに設定すると、テーブルは完全に削除されます。 デフォルト値は FALSE です。

RECYCLE_BIN_EXPIRED_TIME

テーブルのごみ箱に移動した後のテーブルの保持期間。 このパラメーターは、テーブルのごみ箱に既に存在するテーブルには適用されません。 単位:ミリ秒。 デフォルト値: 259200000 (3日) 。

重要

ディスクストレージの消耗を防ぐために、適切な保存期間を指定することを推奨します。

ENABLE_RECYCLE_BIN_CLEAN_EXPIRED_テーブル

テーブルごみ箱の非同期クリーンアップスレッド機能を有効にするかどうかを指定します。 デフォルト値は TRUE です。

重要

非同期クリーンアップスレッド機能を無効にしないことを推奨します。

RECYCLE_BIN_CLEAN_EXPIRED_TABLE_インターバル

テーブルのごみ箱が非同期クリーンアップスレッドを実行する間隔。 単位:ミリ秒。 デフォルト値: 60000

テーブルのごみ箱を管理する

テーブルのごみ箱内のテーブルの照会

構文

  • テーブルごみ箱内のすべてのテーブルを照会します。

    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 |
    +----------+-----------------+---------------------------------+------------------+-----------------+---------------------+---------------------+

テーブルのごみ箱からテーブルを復元

ルール

  • 復元されたテーブルは、テーブルのごみ箱に移動する前に名前を使用します。

  • ソースデータベースにテーブルを復元したいが、データベースに同じ名前の別のテーブルが含まれている場合は、データベース内の既存のテーブルの名前を変更したり、削除したり、別のデータベースに移動したりできます。

  • データベース名とテーブル名が同じでタイムスタンプが異なる複数のテーブルを復元すると、AnalyticDB for MySQLは最新のタイムスタンプでテーブルを復元し、他のテーブルのエラーが報告されます。 この場合、復元したテーブルの名前を変更、削除、または別のデータベースに移動できます。

構文

  • テーブルのごみ箱からソースデータベースにすべてのテーブルを復元します。

    RESTORE RECYCLE_BIN ALL;
  • 特定のテーブルをテーブルのごみ箱からソースデータベースに復元します。

    RESTORE RECYCLE_BIN TABLE <Name of the table in the ADB_RECYCLE_BIN database>;

テーブルごみ箱からadb_demo_customer_1720086117277テーブルを復元します。

RESTORE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;

テーブルごみ箱からテーブルを削除する

構文

  • テーブルのごみ箱からすべてのテーブルを削除します。

    PURGE RECYCLE_BIN ALL;
  • テーブルのごみ箱から特定のテーブルを削除します。

    PURGE RECYCLE_BIN TABLE <Name of the table in the ADB_RECYCLE_BIN database>;

テーブルごみ箱からadb_demo_customer_1720086117277テーブルを削除します。

PURGE RECYCLE_BIN TABLE adb_demo_customer_1720086117277;

テーブルごみ箱内のテーブルの保存期間の変更

構文

テーブルごみ箱のテーブルの保存期間を変更します。

SET adb_config RECYCLE_BIN_EXPIRED_TIME=<Retention period of tables>;
重要

テーブルの保持期間を変更すると、変更後に削除されたテーブルに対してのみ、新しい保持期間が有効になります。 以前の保持期間は、テーブルのごみ箱内の既存のテーブルに適用されます。

テーブルごみ箱のテーブルの保存期間を2日に変更します。

# The retention period is calculated by using the following formula: 2 × 24 × 3600 × 1000 = 172800000. Unit: milliseconds.
SET adb_config RECYCLE_BIN_EXPIRED_TIME=172800000;