メインコンテンツへスキップ

データベースの移行

blocklet server migrate コマンドは、Blocklet Server インスタンスをスケーリングするための重要なユーティリティです。このコマンドは、サーバーの基盤となるデータベースを、開発やシンプルなセットアップに最適なデフォルトの SQLite から、本番環境向けの PostgreSQL のような、より堅牢でスケーラブルなシステムへの移行を容易にします。

コマンドの使用法

移行を開始するには、migrate コマンドを使用し、ターゲットデータベースシステムを指定します。

移行コマンド

bash
blocklet server migrate --dialect <dialect>

オプション

オプション説明必須許可される値
--dialect移行先のターゲットデータベースシステム。はいpostgres, sqlite

このコマンドは、SQLite と PostgreSQL 間でのデータベース移行をサポートしています。主なユースケースは本番環境向けに SQLite から PostgreSQL にアップグレードすることですが、PostgreSQL から SQLite に戻すことも可能です。これは、開発やデバッグ用にポータブルなスナップショットを作成するのに役立つ場合があります。

仕組み

移行プロセスは、シンプルになるように設計されています。コマンドはまず、既存の SQLite データベースからインストールされている blocklet のリストとその他の重要な設定を読み取ります。次に、提供された接続詳細を使用して新しい PostgreSQL データベースに接続し、必要なテーブルを作成するためにすべての必要なスキーマ移行を実行し、データを投入します。

Migrate Database

ステップバイステップガイド: PostgreSQL への移行

以下の手順に従って、Blocklet Server のデータを SQLite から PostgreSQL に移動します。

前提条件

開始する前に、以下の条件が満たされていることを確認してください:

  1. サーバーが少なくとも一度は起動されていること

    これは、最初の blocklet server start コマンドが、移行ツールが読み取る必要がある SQLite データベースとテーブルを作成するために必要です。

  2. ターゲットデータベースの準備ができていること

    PostgreSQL サーバーがインストールされ、実行中で、CLI を実行しているマシンからアクセス可能である必要があります。

  3. PostgreSQL 接続 URL

    PostgreSQL データベースの完全な接続文字列が必要です。

ステップ 1: ターゲットデータベースを設定する

CLI は PostgreSQL データベースへの接続方法を知る必要があります。これは、ABT_NODE_POSTGRES_URL 環境変数を設定することで行います。

環境変数を設定

bash
export ABT_NODE_POSTGRES_URL="postgres://user:password@host:port/database"

userpasswordhostport、および database を実際の PostgreSQL の認証情報に置き換えてください。

ステップ 2: 移行コマンドを実行する

環境変数を設定したら、移行コマンドを実行します。プロセスはその進行状況を表示し、Getting blocklets... のようなメッセージで始まります。

移行の実行

bash
blocklet server migrate --dialect postgres

ステップ 3: サーバーを起動する

コマンドが Migration postgres completed メッセージで終了したら、プロセスは完了です。最後のステップは Blocklet Server を起動することです。ABT_NODE_POSTGRES_URL 環境変数が存在している限り、サーバーは自動的に新しい PostgreSQL データベースに接続して使用します。

サーバーの起動

bash
blocklet server start

これでサーバーは PostgreSQL 上で実行され、本番環境のワークロードに対応できる状態になりました。

トラブルシューティング

エラー: SQLITE_ERROR: no such table

Failed to get blocklets: SQLITE_ERROR: no such table: blockletsdose not exist のようなエラーメッセージに遭遇した場合、それはほとんどの場合、初期の SQLite データベースが作成されていなかったことを意味します。

解決策: データベースを初期化するために、少なくとも一度はサーバーを実行する必要があります。blocklet server start を実行し、完全に起動するのを待ってから、blocklet server stop で停止します。その後、再度移行プロセスを試みることができます。