データ定義言語 (DDL) 操作はロールバックできません。 偶発的な操作によりデータが失われる可能性があります。 例えば、ユーザがDROP TABLEオペレーションを呼び出すと、データが失われることがある。 PolarDBはごみ箱機能を提供し、削除されたテーブルを一時的に保存します。 削除されたテーブルを復元できる保持期間をカスタマイズできます。
前提条件
PolarDBクラスターはPolarDB for MySQL 8.0.1で、リビジョンバージョンは8.0.1.1.2以降です。 バージョンの確認方法の詳細については、「エンジンバージョンの照会」をご参照ください。
特徴
リサイクルとパージテーブル
リサイクルテーブル
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__
データベースにテーブルを移動します。 リサイクルされたテーブルには、名前が一意になるように、次の形式で名前を付ける必要があります。"__" + <ストレージエンジン> + <SEプライベートid>
下表に、各パラメーターを説明します。
パラメーター
説明
ストレージエンジン
ストレージエンジンの名前。
SEプライベートid
テーブルを識別するためにストレージエンジンによって生成される一意の値。 たとえば、InnoDBのこのパラメーターの値は
テーブルid
です。独立したリサイクル
たとえば、プライマリノードのごみ箱には7日間の保存期間を指定し、読み取り専用ノードのごみ箱には14日間の保存期間を指定できます。
説明ごみ箱の保管スペースは、指定した保存期間によって異なります。
注意事項
__recycle_bin__
データベースとリサイクルするテーブルが異なるファイルシステムにある場合、DROP TABLE
操作はテーブルスペース間でファイルを移動します。リサイクルするテーブルが、複数のテーブルが格納されている
一般的
なテーブルスペースにある場合、いずれかのテーブルをリサイクルしても、テーブルスペースのファイルは移動されません。
Usage
ごみ箱機能を使用する前に、次のパラメーターを設定する必要があります。loose_recycle_binはごみ箱を有効にするかどうかを指定し、loose_recycle_bin_retentionはごみ箱内のデータの最大保持期間を指定し、loose_recycle_schedulerはごみ箱の非同期パージに使用されるスレッドを有効にするかどうかどうかどうかを指定します。 詳細については、「クラスターとノードパラメーターの設定」をご参照ください。 下表に、各パラメーターを説明します。
パラメーター | レベル | 説明 |
loose_recycle_bin | グローバルとセッション | ごみ箱を有効にするかどうかを指定します。 デフォルト値: OFF。 有効な値:
|
loose_recycle_bin_保持 | グローバル | ごみ箱内のデータの最大保持期間。 有効な値: 86400〜1209600。 単位は秒です。 デフォルト値: 604800 この値は7日に相当します。 |
loose_recycle_scheduler | グローバル | ごみ箱の非同期パージに使用するスレッドを有効にするかどうかを指定します。 デフォルト値: OFF。 有効な値:
|
ごみ箱を管理する
PolarDBは、ごみ箱を管理するために次のステートメントを提供します。
show_tables
次のステートメントを実行して、ごみ箱に一時的に保存されているすべてのテーブルを表示できます。
の呼び出しdbms_recycle.show_tables()
例:
dbms_recycle.show_tables() を呼び出します。+ ----------------- + ------------------------------------------------------------- --------------------- + --------------------- + | スキーマ | テーブル | 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 | 親 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | __recycle_bin__ |_innodb_1066 | product_db | 子 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | + ----------------- + ------------------------------------------------------------- --------------------- + --------------------- + セットの4列 (0.00秒)
下表に、各パラメーターを説明します。
パラメーター
説明
スキーマ
ごみ箱のスキーマ。
テーブル
テーブルがごみ箱に移動された後のテーブルの名前。
ORIGIN_SCHEMA
テーブルがごみ箱に移動される前の元のテーブルのスキーマ。
ORIGIN_TABLE
テーブルの元の名前。
リサイクル_時間
テーブルがごみ箱に移動された時刻。
パージ_時間
テーブルがごみ箱からパージされる推定時間。
purge_table
このメソッドは、ごみ箱からテーブルを手動で削除するために使用されます。
の呼び出しdbms_recycle.purge_table('TABLE_NAME')
説明TABLE_NAME
パラメーターは、テーブルがごみ箱に移動された後のテーブルの名前を指定します。テーブルのパージに使用するアカウントには、元のテーブルとごみ箱内のテーブルに対するDROP権限が必要です。
例:
mysql> dbms_recycle.purge_table('__innodb_1063') を呼び出します。
restore_table
次のステートメントを実行して、ごみ箱からテーブルを復元できます。
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_テーブル
復元されたテーブルの新しい名前。
例:
dbms_recycle.restore_table('__innodb_1063','testDB','testTable') を呼び出します。