バックアップ (レガシー)
D1は、データベースのバックアップの作成と復元をサポートしており、スケジュールされた自動バックアップや手動バックアップ管理のサポートも含まれています。
D1は、あなたのデータベースを毎時自動的にバックアップし、バックアップを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データベースをバックアップするには、次の条件を満たす必要があります:
- CloudflareのWrangler CLIがインストールされていること
- バックアップしたい既存の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データベースの利用可能なバックアップをリストするには、wrangler d1 backup list <DATABASE_NAME>を使用して、そのIDを含めてリストします。
たとえば、example-dbというデータベースの特定のバックアップをダウンロードするには:
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に渡します:
wrangler d1 backup restore existing-db 6cceaf8c-ceab-4351-ac85-7f9e606973e3existing-db をバックアップ 6cceaf8c-ceab-4351-ac85-7f9e606973e3 から復元中....完了!復元が完了すると、データベースに対するすべてのクエリは、即座に現在の(復元された)バージョンをクエリします。