升级Metabase
升级到新版本 Metabase 指南。
备份您的应用程序数据库
应用程序数据库记录了您的所有人、仪表板、问题、收藏夹和权限:Metabase 中的所有应用程序数据(即除了连接到 Metabase 的数据之外的所有数据)。虽然您不太可能需要回滚到当前版本,但备份将有助于让您安心。
更换新的 Metabase 版本
步骤取决于您是运行 JAR 还是 Docker 镜像。
升级本地运行的 JAR
如果您直接运行 JVM Jar 文件
-
下载 JAR 文件的最新版本
-
使用终端访问您现有的 Metabase 进程并将其终止(通常是 CTRL-C)。
-
用新版本的 JAR 文件替换您 Metabase 目录中的现有 JAR 文件(
metabase.jar
)。 -
重新启动服务器
java -jar metabase.jar
启动时,Metabase 将执行任何必要的任务以完成升级。一旦 Metabase 完成这些任务,您将运行新版本。
在生产环境中作为服务运行 JAR 的升级
要升级,您需要停止服务、用新版本的 JAR 替换,然后重新启动服务。
例如,如果您使用 Nginx 将 Metabase 运行在 Debian 上的服务。
-
下载 JAR 文件的最新版本
-
停止 Metabase 服务。假设您将服务命名为
metabase.service
),您将运行sudo systemctl stop metabase.service
-
在您的服务器上 Metabase 目录中,用您下载的新 JAR 替换当前的(较旧的)Metabase JAR 文件。
-
重新启动服务
sudo systemctl restart metabase.service
升级 Docker 镜像
如果您在 Docker 容器中运行 Metabase
-
警告:如果您没有使用生产就绪数据库,您的应用程序数据(问题、仪表板等)已经存储在容器内的 H2 数据库中。升级需要用具有升级 Metabase JAR 的新镜像替换现有容器,这将清除您的应用程序数据。我们建议在升级之前切换到生产就绪数据库。
-
停止当前 Docker 容器。
-
拉取最新的 Metabase Docker 镜像。
Metabase 开源
docker pull metabase/metabase:latest
Metabase Pro 或企业版
docker pull metabase/metabase-enterprise:latest
-
启动新的 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版本的文档。