tencent cloud

TDSQL-C for MySQL

ごみ箱

Download
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:14:39
ごみ箱(recycle bin)機能は、ユーザーによるdrop table操作やtruncate table操作の対象となったテーブルを回収可能な状態で格納することをサポートします。これにより、必要時にデータを復元可能とし、誤ったテーブル削除操作を防止できるほか、drop table操作によるIOへの影響を軽減できます。

サポートバージョン

カーネルバージョン TXSQL 8.0 3.1.15 以降。

適用シーン

ごみ箱にユーザーのdrop table操作やtruncate table操作の対象テーブルを格納するために使用され、データを誤って削除した後の復元不能な状況を回避します。

使用説明

パラメータ説明

パラメータ名
動的
タイプ
デフォルト
パラメータ値の範囲
説明
txsql_recycle_bin_enabled
yes
bool
OFF
ON/OFF
ごみ箱のスイッチ。
txsql_recycle_bin_db_not_visible
yes
bool
ON
ON/OFF
非 tencentroot ユーザーに対する __txsql_recycle_bin__ データベースの可視性を制御するスイッチ。
txsql_recycle_scheduler_interval
yes
ulong
0
0-18446744073709551615
単位:秒。ごみ箱内の自動クリーンアップ間隔です。デフォルト値は0(自動クリーンアップを実行しないことを意味します)となります。
txsql_recycle_bin_retention
yes
ulong
604800
0-18446744073709551615
単位:秒。ごみ箱に格納されたテーブルが自動クリーンアップされるまでの時間間隔を決定します。デフォルトは604800秒(1週間)です。
txsql_recycle_bin_max_size
yes
ulong
18446744073709551615
0-18446744073709551615
ごみ箱の最大容量を設定します。この容量を超えた場合、エラーが発生します。
txsql_drop_if_exceed_recycle_limit
yes
bool
OFF
ON/OFF
ごみ箱の容量を超えた場合に直接削除するかどうかを設定します。ごみ箱の最大容量を超えた場合、OFFに設定するとエラーが発生し、テーブルは削除されません。ONに設定すると、最大容量超過後にテーブルを直接削除し、ワーニング情報を表示します。

新しいデータベースの説明

__txsql_recycle_bin__:削除されたテーブルを格納するためのデータベースです。インスタンス起動時に__txsql_recycle_bin__という名前のデータベースが初期化され、ごみ箱専用データベースとして使用されます。__txsql_recycle_bin__はシステムレベルのデータベースであり、直接変更や削除はできません。
ごみ箱内のテーブルについては、直接 drop table ステートメントを実行することはできませんが、以下の構文を使用してクリアできます:
clear <TABLE_NAME> from recycle_bin;
または
call sys.recycle_bin_purge_table('<RECYCLE_NAME>');
<TABLE_NAME>:ごみ箱に格納される前のテーブル名。
<RECYCLE_NAME>:ごみ箱内のテーブル名。

新しいシステムテーブルの説明

mysql.recycle_bin_info:ごみ箱内のテーブル関連情報を表示するために使用されます。テーブルの定義は次のとおりです:
CREATE TABLE IF NOT EXISTS recycle_bin_info (
table_name varchar(64) NOT NULL, --削除後、ごみ箱内のテーブル名
origin_schema VARCHAR(64) NOT NULL, --ごみ箱に格納される前の元のデータベース
origin_table VARCHAR(64) NOT NULL, --ごみ箱に格納される前の元のテーブル名
drop_time timestamp NOT NULL, --ドロップされた時間
purge_time timestamp NOT NULL, --このテーブルがパージされる予定の時間
PRIMARY KEY(table_name),
KEY(purge_time),
KEY `idx_drop_time` (`drop_time`),
KEY `idx_schema_table` (`origin_schema`,`origin_table`)
) ENGINE=INNODB CHARACTER SET latin1 STATS_PERSISTENT=0 ROW_FORMAT=DYNAMIC TABLESPACE=mysql
指定のpurge_timeを超過すると、ごみ箱内の該当テーブルはパージされます。パラメータtxsql_recycle_bin_retentionでドロップされたテーブルの期限切れ時間を設定可能です。この変数は、ごみ箱に格納されたテーブルがtxsql_recycle_bin_retention秒後に自動クリーンアップスレッドによって削除されることを示します。
説明:
あるテーブルに対応するpurge_time = drop_time + txsql_recycle_bin_retentionです。

truncate tableのサポート

truncate table のテーブルはごみ箱に格納できます。
truncate table 制限事項:
temporary table はサポートしていません。
foreign key を持つテーブルはサポートしていません。
table属性を持つdata directoryとindex directoryはサポートしていません。

drop tables if exists をサポートしています。

drop tables if exists をサポートしており、存在するテーブルはごみ箱に格納され、存在しないテーブルには何も操作を行いません。

drop database をサポートしています。

drop database 時には、view、event、trigger、procedure、function、sequence の情報が失われる可能性があります。したがって、ごみ箱はデータが確実に回収されることのみを保証しますが、view、event、trigger、procedure、function、sequence の情報は失われる可能性があります。

使用文法の説明

rootアカウントを使用してset global txsql_recycle_bin_enabled=on;と設定すると、ごみ箱機能を有効にできます。
ごみ箱機能の有効化に成功すると、当該インスタンスのすべてのdrop tableテーブルは__txsql_recycle_bin__データベースに格納されます。show recycle_bin;またはselect mysql.recycle_bin_info;を使用して、ごみ箱内のすべての回収済みテーブルの関連情報を表示できます。
restore db.table from recycle_bin;は指定されたテーブルをごみ箱から復元します。同じ名前のテーブルが複数存在する場合、最も最近削除されたテーブルが返されます。
restore db.table from recycle_bin with {timestamp('expr')} {recycle_name $recycle_name};タイムスタンプを指定した場合、指定したテーブル名および削除時間のテーブルをごみ箱から復元することをサポートします。recycle_nameを指定した場合、recycle_nameは一意であるため、前述のdbおよびtableは検索に使用されず、recycle_nameでテーブルを検索した後、restoreされるテーブルはdb.tableとなります。したがって、このコマンドを使用して他のスキーマに復元したり、復元後のテーブル名を変更したりできます。
restore database db_name from recycle_bin;は指定されたデータベースのすべてのテーブルを復元します。同じ名前のテーブルが含まれている場合、エラーが発生します。
clear recycle_bin; ごみ箱全体をクリアします。
clear recycle_bin {all} {db.table} {before timestamp $time};指定したテーブル名または指定時刻より前のテーブルをクリアします。指定したテーブルが複数存在する場合、最も古いものが削除されます。allを同時に指定した場合、すべての同名テーブルが削除されます。
show recycle_bin; ごみ箱の情報を表示します。
drop ... without reycle_bin;はテーブルをごみ箱に入れるのではなく、強制的に削除することができます。
txsql_recycle_scheduler_intervalの起動条件(txsql_recycle_scheduler_interval > 0 && event_scheduler==on && txsql_recycle_bin_enabled==on)が満たされると、ごみ箱の自動クリーンアップスレッドは、txsql_recycle_scheduler_intervalごとにテーブルをスキャンし、purge_timeが最小のレコードを確認します。purge_time > now()の場合、当該テーブルはクリーンアップされます。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック