多个环境
用于启动开发、暂存或测试环境的选项。
一旦您开始在生产环境中运行 Metabase,您可能希望在单独的环境中进行测试和开发。对于大多数团队来说,这意味着复制生产环境中的一些(或所有)图表和仪表板,对这些副本进行更改,然后选择性地将这些更改推送回生产环境。
对于希望一次性对许多 Metabase 项目或设置进行编程更改的团队,最好为每个环境设置一个实例。您还可以通过为每个环境设置一个集合来模拟开发和生产环境以进行仪表板维护。
每个环境一个实例
要为每个环境设置一个实例,您需要一个自托管的专业版或企业版计划。由于自托管的专业版和企业版计划方便地按账户收费,您可以根据需要启动任意数量的 Metabase 实例。请记住,您将支付所有 Metabase 用户总数的费用,因此只需添加设置暂存或开发实例所需的最小用户数量(例如,在一个组中设置单个测试用户来测试权限,而不是添加生产实例中的所有用户)。
要根据您的生产 Metabase 建立一个新环境,您将使用 Metabase 的序列化功能来创建图表、仪表板和设置的导出文件。您还可以在将导出文件导入到新的 Metabase 暂存实例之前编辑其 YAML 文件。例如,您可以创建一组带有品牌标识的仪表板模板,用于填充任何新环境。
当需要将暂存环境中的更改推送回生产环境时,您的团队将使用相同的序列化过程从暂存环境导出并将其导入到生产环境。您还可以设置自己的集成测试,以避免导入任何可能破坏生产实例的内容。
示例:创建自托管暂存实例
假设您的 Metabase 生产实例正在 Docker 或类似环境中运行
- 备份您的生产实例使用的应用程序数据库。
- 创建一个名为 **staging** 的新容器。
-
从 **staging** 容器中,以以下设置启动一个全新的 Metabase
- 使用适当的环境变量连接到您的生产应用程序数据库。
- 使用
MB_PREMIUM_EMBEDDING_TOKEN
添加您的许可证密钥。 - 包含与您的生产实例匹配的版本标签(例如
metabase/metabase-enterprise:v1.56.2
)。
- Metabase 在 **staging** 容器中运行后,运行序列化导出命令。
- 将导出文件持久化到您想要的任何对象存储。
- 可选:编辑导出文件的 YAML 文件。例如,您可以运行脚本将
ID = 1
替换为ID = 2
。 - 重新启动 **staging** 容器。
- 从 **staging** 容器中,创建一个新的应用程序数据库。
-
使用序列化 [导入](/docs/latest/installation-and-operation/serialization 命令启动 Metabase
- 使用适当的环境变量连接到新的应用程序数据库。
- 使用
MB_PREMIUM_EMBEDDING_TOKEN
添加您的许可证密钥。 - 包含与您的生产实例匹配的版本标签(例如
metabase/metabase-enterprise:v1.56.2
)。
确切的步骤将取决于您的部署。如果您遇到困难,您可以随时咨询我们的成功工程师!
每个环境一个集合
要管理 Metabase 仪表板的更改而不进行序列化,您可以使用集合、集合权限和历史记录。
示例:创建生产和开发集合
以下是为每个集合设置一个“环境”的示例
- 创建两个名为 **Prod** 和 **Dev** 的集合。
- 创建两个名为 **最终用户** 和 **开发人员** 的组。
- 按组设置集合权限
- 开发人员可以管理 **Prod** 和 **Dev** 集合。
- 最终用户可以查看 **Prod** 集合。
- 可选:按组设置数据权限。例如
- 开发人员可以查询生成器和原生访问 **Dev** 和 **Prod** 集合中使用的表或数据库。
- 最终用户为 **Prod** 集合中使用的表或数据库设置了行和列安全。
开发人员组的成员可以在 **Prod** 和 **Dev** 集合之间复制和移动项目,以便在不暴露进行中的工作的情况下进行更改。人们还可以使用项目的历史记录查看和恢复更改。