Skip to content

元ドキュメント: テーブルごみ箱

テーブルリサイクル機能

概要

テーブルごみ箱は、誤削除によるデータ損失を防止するためのデータ安全機能です。有効化すると、DROP TABLE 操作を内部的に RENAME 操作に変換し、削除されたテーブルをシステムスキーマ(__tdsql__recycle_bin__)に一時保管します。FLASHBACK TABLE コマンドにより、削除されたテーブルを迅速に復元できます。

動作原理

  • 削除時: DROP TABLE db.tRENAME TABLE db.t TO __tdsql__recycle_bin__.<RECYCLED_TABLE>
  • 復元時: RENAME TABLE __tdsql__recycle_bin__.<RECYCLED_TABLE> TO db.t

制限事項

  • Binlog との排他: ごみ箱機能は ログサービス(Binlog) やディザスタリカバリインスタンスと同時に有効化できません(DROP を RENAME に変換するため、データ同期が破綻します)
  • 対象範囲: データベース、トリガー、ファンクション、ストアドプロシージャ、一時テーブルは非対応
  • パーティション: パーティションテーブルの個別サブパーティションの退避・復元には非対応
  • 権限: 一般ユーザーはテーブルを復元できません。管理者/スーパーユーザー権限が必要です

使用方法

ごみ箱の有効化/無効化

sql
-- 有効化
SET PERSIST tdsql_recycle_bin_enabled = 1;

-- 無効化
SET PERSIST tdsql_recycle_bin_enabled = 0;

デフォルトでは無効です。有効化すると、テーブルを手動または自動でパージするまでストレージ領域は解放されません。

ごみ箱の内容を確認

sql
SHOW RECYCLEBIN;

出力フィールド:

フィールド説明
origin_schema元のデータベース名
origin_table元のテーブル名
recycle_tableごみ箱内のエンコード名
drop_timeテーブルが削除された日時
purge_time自動クリーンアップの予定日時(デフォルト 7 日後)

テーブルの復元

sql
-- 基本的な復元
FLASHBACK TABLE $recycle_table_name TO BEFORE DROP;

-- リネームして復元
FLASHBACK TABLE `bin$zxrh/bsnned9vygu4ioafg==$1` TO BEFORE DROP RENAME TO sbtest11;

ごみ箱をバイパスして完全削除

sql
DROP TABLE $NAME PURGE;

ごみ箱のクリーンアップ

sql
-- 特定テーブルのパージ
PURGE RECYCLEBIN $recycle_table_name;

-- ごみ箱全体のパージ
PURGE RECYCLEBIN;

設定パラメータ

パラメータデフォルト説明
tdsql_recycle_bin_enabled0ごみ箱の有効化(1)/ 無効化(0)
tdsql_recycle_bin_retention604800保持期間(秒単位。デフォルト: 7 日)
tdsql_recycle_bin_max_size18446744073709551615ごみ箱に保存可能なオブジェクトの最大数
tdsql_recycle_bin_drop_if_exceed_limit1上限超過時の動作。1: テーブルを完全削除、0: テーブルを削除しない

Tencent Cloud プロダクトドキュメント