升級 Metabase

升級至新版 Metabase 版本 的說明。

備份您的應用程式資料庫

應用程式資料庫會追蹤您的所有人員、儀表板、問題、集合、權限:Metabase 中的所有應用程式資料 (也就是除了您已連線至 Metabase 的資料以外的所有項目)。雖然您不太可能需要回復到目前的版本,但備份將能讓您安心無憂。

請參閱備份 Metabase 應用程式資料

換入新的 Metabase 版本

步驟會因您執行的是 JAR 還是 Docker 映像而有所不同。

升級在本機執行的 JAR

如果您直接執行 JVM Jar 檔案

  1. 備份您的應用程式資料庫.

  2. 下載最新版本的 JAR 檔案

  3. 使用終端機存取您現有的 Metabase 程序並終止它 (通常是 CTRL-C)。

  4. 將您 Metabase 目錄中現有的 JAR 檔案 (metabase.jar) 取代為較新的版本。

  5. 重新啟動伺服器

    java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar
    

啟動時,Metabase 將執行完成升級所需的任何工作。一旦 Metabase 完成這些工作,您就會執行新的版本。

升級在生產環境中作為服務執行的 JAR

若要升級,您需要停止服務、將 JAR 取代為較新的版本,然後重新啟動服務。

例如,如果您在 Debian 上以服務方式使用 Nginx 執行 Metabase。

  1. 備份您的應用程式資料庫.

  2. 下載最新版本的 JAR 檔案

  3. 停止 Metabase 服務。假設您將服務命名為 metabase.service),您將執行

    sudo systemctl stop metabase.service
    
  4. 在您伺服器上的 Metabase 目錄中,將目前的 (較舊) Metabase JAR 檔案取代為您下載的較新 JAR。

  5. 重新啟動服務

    sudo systemctl restart metabase.service
    

升級 Docker 映像

如果您在 Docker 容器中執行 Metabase

  1. 備份您的應用程式資料庫.

    警告:如果您未使用生產就緒的資料庫,您的應用程式資料 (問題、儀表板等等) 將會儲存在您容器<強調>內部的 H2 資料庫中。升級需要將您現有的容器換成具有升級 Metabase JAR 的新映像,這將會清除您的應用程式資料。我們建議您在升級之前切換到生產就緒的資料庫。

  2. 停止目前的 Docker 容器。

  3. 提取最新的 Metabase Docker 映像。

    Metabase 開放原始碼

    docker pull metabase/metabase:latest
    

    Metabase Pro 或 Enterprise

    docker pull metabase/metabase-enterprise:latest
    
  4. 啟動新的 Docker 容器。根據連接埠和您想要為容器命名的名稱,命令看起來會像這樣

    Metabase 開放原始碼

    docker run -d -p 3000:3000 -e MB_DB_CONNECTION_URI="jdbc:postgresql://<host>:5432/metabase?user=<username>&password=<password>" --name metabase metabase/metabase:latest
    

    Metabase Pro 或 Enterprise

    docker run -d -p 3000:3000 -e MB_DB_CONNECTION_URI="jdbc:postgresql://<host>:5432/metabase?user=<username>&password=<password>" --name metabase metabase/metabase-enterprise:latest
    

啟動時,Metabase 將自動執行升級。一旦 Metabase 完成升級,您就會執行新的版本。

從舊版 Metabase 升級

如果您使用的 Metabase 版本早於 Metabase 40,您需要逐版本升級,直到您使用的是最新版本的 Metabase 40 為止。從最新版本的 Metabase 40 開始,您可以直接跳到目前的 Metabase 版本。

例如,如果您執行的是 Metabase 1.38,您的升級路徑看起來會像這樣

  • 1.38.X
  • 1.39.X
  • 1.40.X
  • 最新

其中 X 是每個版本可用的最新版本。

查看 Metabase 版本清單。

升級 Metabase Cloud

如果您使用的是 Metabase Cloud 方案,我們會在新版本發行時自動升級您的 Metabase;您無需採取任何動作。我們升級您的速度取決於版本類型

  • 次要版本 (例如,從 x.47.4 到 x.47.5):通常約一週。
  • 主要版本 (例如,從 x.47.4 到 x.48.0):時間較長,通常是數週 (只是為了確保一切順利進行)。

Cloud 客戶可以透過傳送電子郵件至 support@metabase.com 要求提早升級。請包含您希望我們升級的 Metabase URL。

在其他平台上升級 Metabase

回復升級

一般而言,定期備份 (尤其是升級前的備份) 是最佳原則,因此我們建議回復到應用程式資料庫的備份,以回復升級。

但是,如果您在升級後對應用程式資料庫進行了想要保留的變更,您或許可以使用 migrate down 命令,將您的 Metabase 應用程式資料庫回復到支援您先前執行的 Metabase 版本。當 Metabase 升級到新版本時,它會執行可能會變更應用程式資料庫結構描述的移轉。migrate down 命令會復原這些結構描述變更。一般而言,我們建議從備份還原 (您絕對記得在升級前產生的備份),並且只有在您真的需要保留升級後所做的變更時,才使用 migrate down 命令。

使用 migrate down 命令

停止您的 Metabase 並使用目前的升級 Metabase JAR (不是您要回復的 Metabase JAR) 以 migrate down 命令完成回復。請確定您應用程式資料庫的連線詳細資料已在環境變數中設定,例如

export MB_DB_TYPE=postgres
export MB_DB_DBNAME=metabaseappdb
export MB_DB_PORT=5432
export MB_DB_USER=username
export MB_DB_PASS=password
export MB_DB_HOST=localhost
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar migrate down

如果您執行的是 Docker,請使用命令 "migrate down" (在 "migrate down" 周圍加上引號),並包含您應用程式資料庫的連線詳細資料,例如

docker run
  -e "MB_DB_TYPE=postgres" \
  -e "MB_DB_DBNAME=metabaseappdb" \
  -e "MB_DB_PORT=5432" \
  -e "MB_DB_USER=name" \
  -e "MB_DB_PASS=password" \
  -e "MB_DB_HOST=my-database-host" \
--rm metabase/metabase "migrate down"

如果您使用 Docker Compose 搭配正確的環境變數,命令將會是

docker compose run metabase "migrate down"

請注意 Docker 和 Docker compose 命令中 "migrate down" 周圍的引號。

一旦移轉程序完成,請使用您想要執行的版本的 JAR 或 Docker 映像啟動 Metabase。

閱讀其他Metabase 版本的文件。