Snowflake Time TravelとFail-safe入門|誤操作からデータを守る2層バックアップ

Snowflake Time TravelとFail-safe入門|誤操作からデータを守る2層バックアップ Snowflake

はじめに:「うっかり削除」からデータを守ろう

「あ、間違えて本番のテーブルをDROPしちゃった……!」
データベースを触っていると、誰でも一度はヒヤッとする瞬間がありますよね。普通のDBならすぐにバックアップを探して復元作業……となるところですが、Snowflakeなら大丈夫。Time TravelFail-safeという2つの機能が、まるでセーフティネットのようにあなたのデータを守ってくれます。

この記事では、この2つの仕組みの違いと使い方を、初心者の方にもわかりやすく解説していきます!

Time TravelとFail-safeって何?

Time Travel:自分で過去に戻れるタイムマシン

Time Travelは、その名の通り「過去のデータに戻る」機能です。テーブルが更新・削除されても、設定した保持期間内であればユーザー自身がSQLで過去の状態を取り出せます。

  • 保持期間: 1日〜90日(Enterprise版以上、Standard版は最大1日)
  • 誰が使う?: あなた自身がSQLで操作可能
  • 用途: 誤更新の復元、過去時点のデータ比較、テーブル復活など

過去データの参照方法については Snowflakeタイムトラベルでテーブルの過去データを参照する方法 でも詳しく紹介しています。

Fail-safe:Snowflakeが管理する最終防衛ライン

Fail-safeは、Time Travelの保持期間が切れた後にさらに7日間データを保管してくれる仕組みです。ただし、こちらはユーザーが直接アクセスできません。「もうダメだ……」というときにSnowflakeのサポートに連絡して復旧してもらう、最終手段です。

Snowflake Time TravelとFail-safe入門|誤操作からデータを守る2層バックアップ

具体的な使い方を見てみよう

1. 保持期間を設定する

テーブル単位でDATA_RETENTION_TIME_IN_DAYSを指定します。0にするとTime Travelは無効になります。

-- 保持期間を7日に設定してテーブル作成
CREATE TABLE sales (
  id INT,
  amount NUMBER
) DATA_RETENTION_TIME_IN_DAYS = 7;

-- 既存テーブルの保持期間を変更
ALTER TABLE sales SET DATA_RETENTION_TIME_IN_DAYS = 30;

2. 過去のデータを参照する(AT / BEFORE句)

-- 5分前のデータを参照
SELECT * FROM sales AT(OFFSET => -60*5);

-- 特定の日時のデータを参照
SELECT * FROM sales AT(TIMESTAMP => '2026-05-06 09:00:00'::TIMESTAMP);

-- 特定のクエリ実行直前の状態を参照
SELECT * FROM sales BEFORE(STATEMENT => '8e5d0ca9-...');

3. 削除されたテーブルを復元する(UNDROP)

これが一番感動する瞬間です。誤ってDROPしたテーブルを一発で取り戻せます!

-- やってしまった……
DROP TABLE sales;

-- 一瞬で復活!
UNDROP TABLE sales;
3. 削除されたテーブルを復元する(UNDROP)の解説図

UNDROPはテーブルだけでなく、スキーマやデータベースに対しても使えますよ注意点とベストプラクティス

  • テーブルの種類で挙動が違う: 通常テーブルはTime Travel + Fail-safe、トランジェントテーブルはTime Travelのみ(最大1日)、テンポラリーテーブルはセッション中のみ。
  • ストレージ料金がかかる: 保持期間中の旧データもストレージとして課金されます。大きなテーブルで保持期間を長くしすぎると料金が膨らむので注意。詳しくは Snowflakeのデータ保持期間とFail-safeでストレージ料金を抑えるコツ をどうぞ。
  • Fail-safeはユーザー操作不可: 復旧にはサポートチケットが必要で、時間もかかります。あくまで「最終保険」と考えましょう。
  • 権限が必要: UNDROPには元のオーナーロールが必要。RBACでのロール設計とあわせて運用しましょう。

まとめ

SnowflakeのTime TravelFail-safeは、データを守る2層構造のセーフティネットです。日常的なミスはTime Travelでサクッと自分で復旧、いざというときはFail-safeでサポートに頼る、という使い分けを覚えておけば安心です。
ぜひ一度、テスト用テーブルでDROP→UNDROPを試してみてくださいね。きっと「Snowflakeすごい!」と感動するはずです✨

参考リンク

関連記事