序列化:在Metabase实例间迁移
如何使用Metabase的序列化功能将问题、仪表板、集合、设置等从一个Metabase实例复制到新的Metabase实例。
Metabase序列化
序列化仅在商业版上可用(仅在自托管计划上)。
许多客户在迁移到本地部署的商业版时,需要上载预定义的问题或仪表板,以设置新的Metabase实例或新的数据库连接。本文将介绍如何:
- 创建一组默认的问题和仪表板。
- 导出那些仪表板。
- 将这些仪表板重新导入新实例。
具体来说,我们将使用dump
和load
Metabase中的命令序列化功能执行第2步和第3步,再加上一点手动管理导出的文件。
我们将使用Docker运行我们的Metabase环境,并使用开源PostgresSQL为了我们应用程序数据库。我们不建议使用默认值H2用于生产的数据库(H2随Metabase一起提供,因为它是一个轻量级数据库,使用Metabase很容易让用户启动和运行)
计划
我们将创建一个Metabase实例(我们的原始环境),创建一个仪表板,并将该仪表板加载到一个新的Metabase实例(我们的目标环境)中。计划如下:
- 创建一个名为metanet的专用网络.
- 启动Metabase的两个实例:origin和target.
- 在原始环境中创建仪表板和集合.
- 从源环境转储数据.
- 将源转储加载到目标环境中.
- 验证仪表板和集合是否已加载到目标环境中.
先决条件
你需要Docker安装在您的计算机上。
步骤1-创建专用网络
要创建名为“metanet”的专用网络,请从您选择的终端运行以下命令:
docker network create metanet
您可以确认网络是用以下方式创建的:
docker network ls
网络将有一个本地作用域和一个网桥驱动程序。
第2步-启动Metabase的两个实例
启动两个称为origin
和target
(尽管你可以随意命名这些环境)。请注意,我们使用--rm -d在创建这些Docker容器时,当您停止它们并在后台运行时,它们都会被移除。请随意更改这些标志以修改该行为。
Origin环境
创建Postgres数据库:
docker run --rm -d --name postgres \
-p 5433:5432 \
-e POSTGRES_USER=metabase \
-e POSTGRES_PASSWORD=knockknock \
--network metanet \
postgres:12
创建Metabase源实例,并将其连接到我们刚刚创建的Postgres数据库:
docker run --rm -d --name metabase-origin \
-p 5001:3000 \
-e MB_DB_TYPE=postgres \
-e MB_DB_DBNAME=metabase \