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

PolarDB:テーブルのごみ箱

最終更新日:Oct 10, 2024

データ定義言語 (DDL) 操作はロールバックできません。 偶発的な操作によりデータが失われる可能性があります。 例えば、ユーザがDROP TABLEオペレーションを呼び出すと、データが失われることがあります。 PolarDBはごみ箱機能を提供し、削除されたテーブルを一時的に保存します。 削除されたテーブルを復元できる保持期間をカスタマイズできます。

重要

テーブルごみ箱機能はストレージ容量を占有し、ストレージ料金が発生します。 ビジネス要件に基づいて、ごみ箱内のデータの最大保存期間を設定します。

前提条件

テーブルごみ箱機能は、次のバージョンでのみサポートされています。

PolarDB for MySQLバージョン8.0.1、リビジョンバージョン8.0.1.1.2以降。

PolarDB for MySQLバージョン8.0.2、リビジョンバージョン8.0.2.1.0以降。

特徴

  • リサイクルとパージテーブル

    • リサイクルテーブル

      DROP TABLEステートメントを実行してテーブルを削除し、DROP DATABASEステートメントを実行してデータベースを削除すると、PolarDBは削除されたテーブルオブジェクトのみを保持し、これらのオブジェクトをごみ箱の特定のディレクトリに移動します。 テーブルオブジェクトに関连しないオブジェクト:

      • 削除されたテーブルに関連しないオブジェクト: システムは、実行するステートメントに基づいてオブジェクトを保持するかどうかを決定します。 これらのオブジェクトはリサイクルされません。

      • テーブルにアタッチされ、テーブルのデータを変更する可能性のあるオブジェクト: システムは、トリガー外部キーを含むオブジェクトを削除します。 列の統計情報は、テーブルとともにごみ箱に移動されますが、削除されません。

    • パージテーブル

      ごみ箱は、recycle_bin_retentionパラメーターで指定された期間より長く保存されているテーブルを非同期にパージするためのバックグラウンドスレッドを開始します。 大量のデータを持つテーブルの場合、システムは別のバックグラウンドスレッドを起動して、これらのテーブルを非同期にパージします。

  • 権限

    PolarDBクラスターが起動すると、__recycle_bin__ という名前のデータベースがごみ箱のデータベースとして初期化されます。 __recycle_bin__ データベースはシステムデータベースです。 このデータベースは変更または削除できません。

    ごみ箱内のテーブルに対してDROP TABLEステートメントを実行することはできません。 ただし、call dbms_recycle.purge_table('table name'); ステートメントを実行して、これらのテーブルをパージできます。

    説明

    テーブルのパージに使用するアカウントには、元のテーブルとごみ箱内のテーブルに対するDROP権限が必要です。

  • ごみ箱のテーブルに名前を付ける方法

    ごみ箱は、異なるデータベースから __recycle_bin__ データベースにテーブルを移動します。 リサイクルされたテーブルには、名前が一意になるように、次の形式で名前を付ける必要があります。

    "__" + <Storage Engine> + <SE private id> 

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    ストレージエンジン

    ストレージエンジンの名前。

    SEプライベートid

    テーブルを識別するためにストレージエンジンによって生成される一意の値。 たとえば、InnoDBのこのパラメーターの値はテーブルidです。

  • 独立したリサイクル

    たとえば、プライマリノードのごみ箱には7日間の保存期間を指定し、読み取り専用ノードのごみ箱には14日間の保存期間を指定できます。

    説明

    ごみ箱の保管スペースは、指定した保存期間によって異なります。

注意事項

  • __recycle_bin__ データベースとリサイクルするテーブルが異なるファイルシステムにある場合、DROP TABLE操作はテーブルスペース間でファイルを移動します。

  • リサイクルするテーブルが、複数のテーブルが格納されている一般的なテーブルスペースにある場合、いずれかのテーブルをリサイクルしても、テーブルスペースのファイルは移動されません。

課金

テーブルごみ箱機能では、クラスターのストレージ容量が使用されるため、ストレージ料金が発生します。 詳細については、「ストレージの課金ルール」をご参照ください。

使用量

loose_recycle_binパラメーターを設定して、ごみ箱を有効または無効にします。 ごみ箱を有効にすると、リサイクルテーブルのルールに基づいてデータがリサイクルされます。 ただし、テーブルはデフォルトでは削除されません。 ごみ箱内のデータによる追加のストレージ料金を回避するために、テーブルパージを有効にすることを推奨します。

説明

loose_recycle_schedulerパラメーターを設定して、テーブルのパージ機能を制御します。 テーブルパージが無効になっている場合、loose_recycle_schedulerパラメーターは無視され、データは長期間保持されます。

パラメーター

レベル

説明

loose_recycle_bin

グローバルとセッション

ごみ箱を有効にするかどうかを指定します。 デフォルト値: OFF。 有効な値:

  • ON

  • オフ

loose_recycle_bin_保持

グローバル

ごみ箱内のデータの最大保持期間。 有効な値: 86400〜1209600。 単位は秒です。 デフォルト値: 604800 この値は7日に相当します。

loose_recycle_scheduler

グローバル

ごみ箱の非同期パージに使用するスレッドを有効にするかどうかを指定します。 デフォルト値: OFF。 有効な値:

  • ON

  • オフ

ごみ箱を管理する

PolarDBは、ごみ箱を管理するために次のステートメントを提供します。

  • show_tables

    次のステートメントを実行して、ごみ箱に一時的に保存されているすべてのテーブルを表示できます。

    call dbms_recycle.show_tables()

    例:

    call dbms_recycle.show_tables();
    +-----------------+---------------+---------------+--------------+---------------------+---------------------+
    | SCHEMA          | TABLE         | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME       | PURGE_TIME          |
    +-----------------+---------------+---------------+--------------+---------------------+---------------------+
    | __recycle_bin__ | __innodb_1063 | product_db    | t1           | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    | __recycle_bin__ | __innodb_1064 | product_db    | t2           | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    | __recycle_bin__ | __innodb_1065 | product_db    | parent       | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    | __recycle_bin__ | __innodb_1066 | product_db    | child        | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 |
    +-----------------+---------------+---------------+--------------+---------------------+---------------------+
    4 rows in set (0.00 sec)

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    スキーマ

    ごみ箱のスキーマ。

    テーブル

    テーブルがごみ箱に移動された後のテーブルの名前。

    ORIGIN_SCHEMA

    テーブルがごみ箱に移動される前の元のテーブルのスキーマ。

    ORIGIN_TABLE

    テーブルの元の名前。

    リサイクル_時間

    テーブルがごみ箱に移動された時刻。

    パージ_時間

    テーブルがごみ箱からパージされる推定時間。

  • purge_table

    このメソッドは、ごみ箱からテーブルを手動で削除するために使用されます。

    call dbms_recycle.purge_table('TABLE_NAME')
    説明
    • TABLE_NAMEパラメーターは、テーブルがごみ箱に移動された後のテーブルの名前を指定します。

    • テーブルのパージに使用するアカウントには、元のテーブルとごみ箱内のテーブルに対するDROP権限が必要です。

    例:

    mysql> call dbms_recycle.purge_table('__innodb_1063');
  • restore_table

    次のステートメントを実行して、ごみ箱からテーブルを復元できます。

    call dbms_recycle.restore_table('RECYCLE_TABLE','DEST_DB','DEST_TABLE');
    説明
    • リビジョンバージョンが8.0.1.1.12以降のPolarDB for MySQL 8.0 Cluster Editionのクラスターのみが、restore_tableステートメントを実行してごみ箱からテーブルを復元できます。 バージョンの確認方法の詳細については、「エンジンバージョンの照会」をご参照ください。

    • 上記のステートメントを実行するには、アカウントに __recycle_bin__ データベースに対するALTER_ACLおよびDROP_ACL権限と、宛先テーブルに対するCREATE_ACLおよびINSERT_ACL権限が必要です。

    下表に、各パラメーターを説明します。

    パラメーター

    説明

    RECYCLE_TABLE

    ごみ箱から復元するテーブルの名前。

    説明

    このパラメーターのみを指定すると、元のテーブルのデータが復元されます。

    DEST_DB

    復元するテーブルのターゲットデータベース。

    DEST_テーブル

    復元されたテーブルの新しい名前。

    例:

    call dbms_recycle.restore_table('__innodb_1063','testDB','testTable');

お問い合わせ

DDL操作についてご質問がある場合は、お気軽にお問い合わせください。