Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

バックアップ(レガシー)

最終更新 Markdown で表示Agent セットアップ

D1 は wrangler v3 で、データベースのバックアップ作成と復元を組み込みでサポートしています。スケジュールされた自動バックアップと、手動のバックアップ管理にも対応しています。

自動バックアップ

D1 はユーザーに代わって、データベースを 1 時間ごとに自動バックアップし、バックアップを 24 時間保持 します。バックアップの実行中は DB へのアクセスがブロックされます。ほとんどの場合は 1〜2 秒程度で、バックアップ中に到着したリクエストはキューに入ります。

手動で作成したバックアップを含め、これらのバックアップを表示・管理するには、d1 backup list <DATABASE_NAME> コマンドで各バックアップを一覧できます。

たとえば、existing-db という名前の D1 データベースのバックアップをすべて一覧するには、次を実行します。

wrangler d1 backup list existing-db

┌──────────────┬──────────────────────────────────────┬────────────┬─────────┐
 created_at id num_tables size
├──────────────┼──────────────────────────────────────┼────────────┼─────────┤
 1 hour ago 54a23309-db00-4c5c-92b1-c977633b937c 1 95.3 kB
├──────────────┼──────────────────────────────────────┼────────────┼─────────┤
 <...> <...> <...> <...>
├──────────────┼──────────────────────────────────────┼────────────┼─────────┤
 2 months ago 8433a91e-86d0-41a3-b1a3-333b080bca16 1 65.5 kB
└──────────────┴──────────────────────────────────────┴────────────┴─────────┘%

各バックアップの id で、特定のバックアップをダウンロードまたは復元できます。

データベースを手動でバックアップする

大きなスキーマ変更、データの手動挿入や削除、利用中のデータベースの変更の前に、手動バックアップを取る習慣は有用です。D1 ではいつでもデータベースのバックアップを作成でき、バックアップはユーザーに代わって保存されます。既存データベースの変更を簡単にするには、マイグレーションの利用 も検討してください。

D1 データベースをバックアップするには、次が必要です。

  1. インストール済みの Cloudflare Wrangler CLI
  2. バックアップ対象の既存 D1 データベース

たとえば、example-db という名前の D1 データベースの手動バックアップを作成するには、d1 backup create を呼び出します。

wrangler d1 backup create example-db
┌─────────────────────────────┬──────────────────────────────────────┬────────────┬─────────┬───────┐
 created_at id num_tables size state
├─────────────────────────────┼──────────────────────────────────────┼────────────┼─────────┼───────┤
 2023-02-04T15:49:36.113753Z 123a81a2-ab91-4c2e-8ebc-64d69633faf1 1 65.5 kB done
└─────────────────────────────┴──────────────────────────────────────┴────────────┴─────────┴───────┘

特に数メガバイト(MB)ありテーブルも多い、大きなデータベースでは、バックアップに数秒かかることがあります。出力の state 列で、バックアップの完了を確認できます。

バックアップをローカルにダウンロードする

バックアップをローカルにダウンロードするには、wrangler d1 backup download <DATABASE_NAME> <BACKUP_ID> を呼び出します。特定の D1 データベースで利用できるバックアップと ID を一覧するには、wrangler d1 backup list <DATABASE_NAME> を使います。

たとえば、example-db という名前のデータベースの特定バックアップをダウンロードするには、次を実行します。

wrangler d1 backup download example-db 123a81a2-ab91-4c2e-8ebc-64d69633faf1

🌀 Downloading backup 123a81a2-ab91-4c2e-8ebc-64d69633faf1 from 'example-db'
🌀 Saving to /Users/you/projects/example-db.123a81a2.sqlite3
🌀 Done!

データベースバックアップは、ネイティブの SQLite3 形式で、現在の作業ディレクトリにダウンロードされます。ローカルデータベースを取り込むには、D1 への データ取り込みのドキュメント を参照してください。

バックアップを復元する

バックアップの復元は、現在稼働中のデータベースをバックアップの内容で上書きします。バックアップに存在しないテーブル(とそのデータ)は、現在のデータベースからもなくなり、それらに依存するクエリは失敗します。

existing-db という名前の D1 データベースの過去のバックアップを復元するには、そのバックアップの ID を d1 backup restore に渡します。

wrangler d1 backup restore existing-db  6cceaf8c-ceab-4351-ac85-7f9e606973e3
Restoring existing-db from backup 6cceaf8c-ceab-4351-ac85-7f9e606973e3....
Done!

復元が完了すると、そのデータベースへのクエリは、すぐに現在の(復元後の)バージョンに対して実行されます。

役に立ちましたか?