テック技報最新号へ →
インフラ

D1: 削除したデータベースの復元(undelete)は削除から 7 日以内に限られる

@CFchangelog · 投稿 2026-10-23
#infra#cloudflare#d1#運用#backup#recovery

D1 の undelete API が受け付けるのは、削除から 7 日(7 × 24 時間)以内のデータベースだけになった。誤って消したら 7 日以内に、できるだけ早く復元リクエストを送る。

いつ使うか

7 日を過ぎた削除済みデータベースに undelete を送るとエラーになる(2026-10-23 の変更)。

手順(REST API)

API トークンで POST /accounts/{account_id}/d1/database/{database_id}/undelete を呼ぶ。database_id は削除前の UUID なので、削除時のログやデプロイ設定(wrangler.jsonc の database_id)から控えておく。

sh
curl -X POST \
  "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/d1/database/$DATABASE_ID/undelete" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
  • 復元後の名前は削除時と同じ。別名にしたいときはリクエストで new_name を指定する(同名の DB を作り直してしまった場合など)
  • すでに削除されていない DB に送っても変更なしで成功する。ただし new_name が現在の名前と違うとエラー
  • 復元した DB はアカウントの上限(DB 数など)に数えられる

注意点

  • Time Travel は undelete より前に戻せない: 復元後、Time Travel(ポイントインタイム復旧)で戻せるのは undelete より後の状態だけ。undelete 時点やそれ以前のブックマーク・時刻は指定できない。復元直後に wrangler d1 export などでスナップショットを取っておくと安心
  • 7 日の猶予は「削除からの経過時間」。週末をまたぐと気づいたときには間に合わないことがあるので、削除を伴う運用(テナント削除バッチなど)は削除イベントをログや通知に残し、database_id を 7 日以上保存しておく
  • 7 日を過ぎたら戻せない前提で、消す前の wrangler d1 export --remote を削除手順に組み込むのが確実
  • 自動削除を持つ制御プレーンは、即削除ではなく「論理削除 → 一定期間後に物理削除」にしておくと undelete の期限に依存しなくて済む

関連

出典

X の元の投稿を開く