前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BI工具之metabase的应用场景与生产环境下的部署

BI工具之metabase的应用场景与生产环境下的部署

原创
作者头像
空洞的盒子
发布2023-11-19 11:00:34
1.2K1
发布2023-11-19 11:00:34
举报
文章被收录于专栏:JD的专栏JD的专栏

一.Metabase介绍

Metabase 是一个开源的数据可视化工具,其引入的question概念使得非技术人员能够轻松地创建和共享自定义数据仪表板。Metabase 同时还支持用户通过简单的拖放界面连接到任何数据源,并使用直观的图表和图表来可视化数据。Metabase 还提供了丰富的分析功能,例如聚合、过滤和分组,使数据能够更加高效便捷的展示出来,便于用户更好的了解数据。

1.Metabase的优点

  • 易用性:Metabase 使用户能够通过简单的拖放界面连接到任何数据源,并使用直观的图表和图表来可视化数据。
  • 灵活性:Metabase 支持多种数据源,包括关系数据库、NoSQL 数据库、云存储和文件系统。
  • 可扩展:Metabase 可以轻松地扩展到满足组织需求的规模。不会像部分BI工具通过付费来解锁用户数量。
  • 开源性:Metabase 是开源的,用户可以根据自身需求对平台进行自定义,且完全免费。

2.Metabase的应用

我们可以通过以下方式对连接的数据源进行查询与可视化。

2.1 question

当我们选择创建问题时,选择数据源之后,就可以通过页面拖拉拽的方式对数据完成可视化。

2.2 SQL查询

当我们需要进行复杂逻辑查询时,页面提供的分析配置可能不能满足很好的需求,此时我们可以通过编写复杂的SQL逻辑进行分析。

2.3仪表板

当我们创建分析任务之后,我们可以将这些分析任务配置在可视化看板中。

二.Metabase生产环境部署

这里我们在部署Metabase时,均采用容器化部署。容器化部署可以做到开箱即用,部署灵活,服务轻量等特点。Metabase自带了H2数据库,所以在部署后我们可以直接对Metabase进行访问。访问地址为localhost:3000。此时,当我们对Metabase服务进行初始化并配置时,数据均持久化在自带的H2数据库中。

1.Metabase容器重启后为何数据会丢失

然而容器总会因为某些原因,发生重启,此时我们持久化在H2数据库中的配置信息,BI报表信息都会丢失。此时当我们再次访问Metabase时就需要重新初始化服务,之前配置的看板,报表的等数据也需要重新配置。

原因:容器的存储空间是独立的,与宿主机的存储空间是分开的。当容器重启时,容器的存储空间会被清空,之前存储在容器中的数据就会丢失。 此时我们就需要对容器配置容器卷,将数据进行持久化。

2.Metabase生产数据库切换

2.1 metabase支持的生产数据库类型

  • postgreSQL,最低版本0.94;
  • MYSQL,最低版本5.7.7,所需设置(默认设置):utf8mb4_unicode_ci排序规则,utf8mb4字符集和innodb_large_prefix=ON
  • MariaDB,最低版本10.2.2,所需设置(默认设置):utf8mb4_unicode_ci排序规则、utf8mb4字符集和innodb_large_prefix=ON

2.2 迁移准备

这里我们选择是MYSQL数据库作为metabase的生产数据库。

数据库参数配置说明:

  1. innodb_large_prefix=ON:该参数默认值为off。在metabase服务初始化的过程中,会对MYSQL数据库进行相应的元数据表创建,并写入相应的数据,会想数据表写入长度较长的id数据等信息,而innodb默认对索引长度有限制,如果不设置此参数,会造成数据写入失败,导致metabase服务初始化失败。
  2. utf8mb4:该字符集为utf8的扩展字符集,utf8字符集无法满足metabase的使用,所以还需要设置db与数据表的字符集。

2.3开始备份迁移

1. 在MYSQL中创建名为metabase的数据库.

代码语言:sql
复制
create database metabase;
ALTER DATABASE metabase CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2. 找到metabase的进程号,并进行kill。

代码语言:shell
复制
ps -aux|grep metabase
kill -9 PID

3. 在metabase容器中,找到metabase的安装目录。找到metabase H2数据库自带的数据文件对齐进行备份。

代码语言:shell
复制
cp metabase.db.mv.db metabase.db

4. 指定metabase jar包从MYSQL数据库启动,并从H2数据库对数据进行导入,将H2数据导入至MYSQL。

代码语言:javascript
复制
java -DMB_DB_TYPE=mysql -DMB_DB_CONNECTION_URI="jdbc:mysql://IP:3306/metabase?user=xxxx&password=xxxxx" -jar /opt/metabase/metabase.jar load-from-h2 metabase.db

启动之后我们就可以在MYSQL数据库中看到相应的metabase元数据表信息。

5.当metabase数据库在MYSQL中初始化完成之后。在dockerfile中,修改启动metabase的启动命令,指定metabase启动时读取MYSQL数据库。

此时我们就不在需要启动命令中添加load-from-h2 metabase.db。因为此时metabase的元数据已经在MYSQL中初始化完成。

代码语言:javascript
复制
java -DMB_DB_TYPE=mysql -DMB_DB_CONNECTION_URI="jdbc:mysql://IP:3306/metabase?user=xxxx&password=xxxx" -jar /opt/metabase/metabase.jar

6.删除原有的容器,通过新构建的镜像对metabase服务进行启动。启动后,我们手动重启容器进行验证,发现已经不再有数据丢失的情况。

2.4代理配置

服务启动后,metabase通过IP:3000进行访问。在公网环境下直接暴露IP与端口会有安全隐患。我们可以通过配置Ingress,通过域名代理metabase后端服务地址。通过域名访问,我们还可以在路由层面进行安全验证。提高访问的安全性。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.Metabase介绍
    • 1.Metabase的优点
      • 2.Metabase的应用
        • 2.1 question
        • 2.2 SQL查询
        • 2.3仪表板
    • 二.Metabase生产环境部署
      • 1.Metabase容器重启后为何数据会丢失
        • 2.Metabase生产数据库切换
          • 2.1 metabase支持的生产数据库类型
          • 2.2 迁移准备
          • 2.3开始备份迁移
          • 2.4代理配置
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档