コンテンツにスキップ

アルファデータベース移行ガイド

D1のオープンベータ版は2023年10月に開始され、新しく作成されたデータベースは、信頼性とパフォーマンスが大幅に向上した異なる基盤アーキテクチャを使用しており、データベースサイズの増加、クエリスループットの改善、レイテンシの低減が実現されています。

このガイドでは、アルファD1データベースを本番環境に適したシステム上で再作成する方法を説明します。

前提条件

  1. wranglerコマンドラインツールがインストールされていること
  2. wranglerのバージョンが3.33.0以上(2024年3月リリース)であること。以前のバージョンには、このガイドの一部として必要な--remoteフラグがありません。
  3. ‘alpha’ D1データベース。2023年7月27日以前に作成されたすべてのデータベース(リリースノート)は、もはやサポートされておらず、本番環境には推奨されていないアルファストレージバックエンドを使用しています。

1. データベースがアルファであることを確認する

Terminal window
npx wrangler d1 info <database_name>

データベースがアルファである場合、コマンドの出力にはversionalphaに設定されていることが含まれます:

...
│ version │ alpha │
...

2. 手動バックアップを作成する

Terminal window
npx wrangler d1 backup create <alpha_database_name>

3. 手動バックアップをダウンロードする

以下のコマンドは、アルファデータベースの手動バックアップを.sqlite3ファイルとしてダウンロードします:

Terminal window
npx wrangler d1 backup download <alpha_database_name> <backup_id> # 利用可能なバックアップは wrangler d1 backup list <database_name> で確認できます

4. 手動バックアップをSQL文に変換する

以下のコマンドは、ダウンロードした.sqlite3ファイルからアルファデータベースの手動バックアップをSQL文に変換し、新しいデータベースにインポートできるようにします:

Terminal window
sqlite3 db_dump.sqlite3 .dump > db.sql

上記のコマンドを実行した後、出力されたSQLファイルをD1と互換性があるように編集する必要があります:

  1. ファイルからBEGIN TRANSACTIONCOMMIT;を削除します。

  2. 次のテーブル作成文を削除します:

    CREATE TABLE _cf_KV (
    key TEXT PRIMARY KEY,
    value BLOB
    ) WITHOUT ROWID;

5. 新しいD1データベースを作成する

すべての新しいD1データベースは、デフォルトで更新されたアーキテクチャを使用します。

以下のコマンドを実行して新しいデータベースを作成します:

Terminal window
npx wrangler d1 create <new_database_name>

6. 新しいD1データベースに対してSQL文を実行する

Terminal window
npx wrangler d1 execute <new_database_name> --remote --file=./db.sql

7. アルファデータベースを削除する

以前のアルファデータベースを削除するには、次のコマンドを実行します:

Terminal window
npx wrangler d1 delete <alpha_database_name>