コンテンツにスキップ

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

D1は、データベースのバックアップの作成と復元をサポートしており、スケジュールされた自動バックアップや手動バックアップ管理のサポートも含まれています。

自動バックアップ

D1は、あなたのデータベースを毎時自動的にバックアップし、バックアップを24時間保持します。バックアップが実行されている間は、DBへのアクセスがブロックされます。ほとんどの場合、これは1秒か2秒の間だけであり、バックアップ中に到着したリクエストはキューに入れられます。

これらのバックアップを表示および管理するには、手動バックアップを含め、d1 backup list <DATABASE_NAME>コマンドを使用して各バックアップをリストできます。

たとえば、existing-dbという名前のD1データベースのすべてのバックアップをリストするには:

Terminal window
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を呼び出します。

Terminal window
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データベースの利用可能なバックアップをリストするには、wrangler d1 backup list <DATABASE_NAME>を使用して、そのIDを含めてリストします。

たとえば、example-dbというデータベースの特定のバックアップをダウンロードするには:

Terminal window
wrangler d1 backup download example-db 123a81a2-ab91-4c2e-8ebc-64d69633faf1
🌀 バックアップ 123a81a2-ab91-4c2e-8ebc-64d69633faf1 'example-db' からダウンロード中
🌀 /Users/you/projects/example-db.123a81a2.sqlite3 に保存中
🌀 完了!

データベースのバックアップは、ネイティブSQLite3形式で現在の作業ディレクトリにダウンロードされます。ローカルデータベースをインポートするには、D1へのデータのインポートに関するドキュメントを読む必要があります。

バックアップの復元

バックアップを復元すると、データベースの現在の実行中のバージョンがバックアップで上書きされます。バックアップに存在しないデータベーステーブル(およびそのデータ)は、データベースの現在のバージョンには存在しなくなり、それに依存するクエリは失敗します。

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

Terminal window
wrangler d1 backup restore existing-db 6cceaf8c-ceab-4351-ac85-7f9e606973e3
existing-db をバックアップ 6cceaf8c-ceab-4351-ac85-7f9e606973e3 から復元中....
完了!

復元が完了すると、データベースに対するすべてのクエリは、即座に現在の(復元された)バージョンをクエリします。