跳到主要內容

遷移資料庫

blocklet server migrate 指令是一個用於擴展 Blocklet Server 實例的關鍵工具。它能協助您將伺服器的底層資料庫從預設的 SQLite(非常適合開發和簡單設定)遷移到像 PostgreSQL 這樣更穩健、更具擴展性的系統,以用於生產環境。

指令用法

若要啟動遷移,請使用 migrate 指令並指定目標資料庫系統。

遷移指令

bash
blocklet server migrate --dialect <dialect>

選項

選項說明是否必須允許值
--dialect要遷移到的目標資料庫系統。Yespostgres, 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"

請務必將 userpasswordhostportdatabase 替換為您實際的 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 將其停止。之後,您可以再次嘗試遷移過程。