升级Metabase

升级到新版本 Metabase 指南。

备份您的应用程序数据库

应用程序数据库记录了您的所有人、仪表板、问题、收藏夹和权限:Metabase 中的所有应用程序数据(即除了连接到 Metabase 的数据之外的所有数据)。虽然您不太可能需要回滚到当前版本,但备份将有助于让您安心。

请参阅备份 Metabase 应用程序数据

更换新的 Metabase 版本

步骤取决于您是运行 JAR 还是 Docker 镜像。

升级本地运行的 JAR

如果您直接运行 JVM Jar 文件

  1. 备份您的应用程序数据库.

  2. 下载 JAR 文件的最新版本

  3. 使用终端访问您现有的 Metabase 进程并将其终止(通常是 CTRL-C)。

  4. 用新版本的 JAR 文件替换您 Metabase 目录中的现有 JAR 文件(metabase.jar)。

  5. 重新启动服务器

    java -jar metabase.jar
    

启动时,Metabase 将执行任何必要的任务以完成升级。一旦 Metabase 完成这些任务,您将运行新版本。

在生产环境中作为服务运行 JAR 的升级

要升级,您需要停止服务、用新版本的 JAR 替换,然后重新启动服务。

例如,如果您使用 Nginx 将 Metabase 运行在 Debian 上的服务。

  1. 备份您的应用程序数据库.

  2. 下载 JAR 文件的最新版本

  3. 停止 Metabase 服务。假设您将服务命名为 metabase.service),您将运行

    sudo systemctl stop metabase.service
    
  4. 在您的服务器上 Metabase 目录中,用您下载的新 JAR 替换当前的(较旧的)Metabase 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 或企业版

    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 或企业版

    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 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):更长,通常几周(以确保一切顺利)。

云客户可以通过发送电子邮件到 [email protected] 请求提前升级。请包含您希望我们升级的 Metabase 的 URL。

在其他平台上升级Metabase

回滚升级

一般来说,定期备份(尤其是升级前的备份)是最好的策略,因此我们建议您恢复到应用程序数据库的备份以回滚升级。

但是,如果您在升级后对应用程序数据库进行了更改并希望保留,您可能可以使用 migrate down 命令将Metabase应用程序数据库回滚到您之前运行的先前Metabase版本。当Metabase升级到新版本时,它会运行迁移,可能会更改应用程序数据库模式。《code class="language-plaintext highlighter-rouge">migrate down 命令将撤销这些模式更改。一般来说,我们建议从备份中恢复(您在升级前确实记得生成的备份),并且只有在您确实需要保留升级后做出的更改时才使用《code class="language-plaintext highlighter-rouge">migrate down 命令。

使用migrate down命令

停止Metabase并使用当前的升级后的Metabase JAR(而不是您要回滚到的Metabase JAR)使用《code class="language-plaintext highlighter-rouge">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 -jar metabase.jar migrate down

如果您正在运行Docker,请使用命令 "migrate down"(在《code class="language-plaintext highlighter-rouge">"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命令中《code class="language-plaintext highlighter-rouge">"migrate down"周围的引号。

一旦迁移过程完成,请使用您要运行的版本的JAR或Docker镜像启动Metabase。

阅读其他《a href="/docs/all">Metabase版本的文档。

想要改进这些文档?《a href="https://github.com/metabase/metabase/blob/master/docs/installation-and-operation/upgrading-metabase.md" target="_blank">提出更改。