升级 Metabase
升级到新 Metabase 版本的说明。
备份您的应用程序数据库
应用程序数据库跟踪您的所有人员、仪表板、问题、集合、权限:Metabase 中的所有应用程序数据(即,除了您已连接到 Metabase 的数据之外的所有内容)。虽然您不太可能需要回滚到当前版本,但备份将对您的安心大有裨益。
请参阅 备份 Metabase 应用程序数据。
换入新的 Metabase 版本
步骤因您运行的是 JAR 还是 Docker 镜像而异。
升级本地运行的 JAR
如果您直接运行 JVM Jar 文件
-
下载最新版本的 JAR 文件
-
使用终端访问您现有的 Metabase 进程并将其终止(通常为 CTRL-C)。
-
将您 Metabase 目录中现有的 JAR 文件 (
metabase.jar
) 替换为较新版本。 -
重启服务器
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar
启动时,Metabase 将执行完成升级所需的任何任务。Metabase 完成这些任务后,您将运行新版本。
升级作为服务在生产环境中运行的 JAR
要升级,您需要停止服务,将 JAR 替换为较新版本,然后重启服务。
例如,如果您在 Debian 上将 Metabase 作为使用 Nginx 的服务运行。
-
下载最新版本的 JAR 文件
-
停止 Metabase 服务。假设您将您的服务称为
metabase.service
),您将运行sudo systemctl stop metabase.service
-
在您服务器上的 Metabase 目录中,将当前(较旧)的 Metabase JAR 文件替换为您下载的较新 JAR。
-
重启服务
sudo systemctl restart metabase.service
升级 Docker 镜像
如果您在 Docker 容器中运行 Metabase
-
警告:如果您没有使用生产就绪的数据库,您的应用程序数据(问题、仪表板等)将存储在容器内部的 H2 数据库中。升级需要将您现有的容器换成带有升级版 Metabase JAR 的新镜像,这将清除您的应用程序数据。我们建议您在升级前切换到生产就绪的数据库。
-
停止当前 Docker 容器。
-
拉取最新的 Metabase Docker 镜像。
Metabase 开源版
docker pull metabase/metabase:latest
Metabase Pro 版或 Enterprise 版
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 版或 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 云
如果您使用的是 Metabase 云计划,我们将在每个新版本发布时自动升级您的 Metabase;您无需执行任何操作。我们升级您的速度取决于发布类型
- 小版本发布(例如,x.47.4 到 x.47.5):通常大约一周。
- 主要版本发布(例如,x.47.4 到 x.48.0):时间更长,通常为数周(只是为了确保一切顺利进行)。
云客户可以通过发送电子邮件至 help@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 的文档。