Metabase 是一个开源的数据可视化工具,其引入的question概念使得非技术人员能够轻松地创建和共享自定义数据仪表板。Metabase 同时还支持用户通过简单的拖放界面连接到任何数据源,并使用直观的图表和图表来可视化数据。Metabase 还提供了丰富的分析功能,例如聚合、过滤和分组,使数据能够更加高效便捷的展示出来,便于用户更好的了解数据。
我们可以通过以下方式对连接的数据源进行查询与可视化。
当我们选择创建问题时,选择数据源之后,就可以通过页面拖拉拽的方式对数据完成可视化。
当我们需要进行复杂逻辑查询时,页面提供的分析配置可能不能满足很好的需求,此时我们可以通过编写复杂的SQL逻辑进行分析。
当我们创建分析任务之后,我们可以将这些分析任务配置在可视化看板中。
这里我们在部署Metabase时,均采用容器化部署。容器化部署可以做到开箱即用,部署灵活,服务轻量等特点。Metabase自带了H2数据库,所以在部署后我们可以直接对Metabase进行访问。访问地址为localhost:3000。此时,当我们对Metabase服务进行初始化并配置时,数据均持久化在自带的H2数据库中。
然而容器总会因为某些原因,发生重启,此时我们持久化在H2数据库中的配置信息,BI报表信息都会丢失。此时当我们再次访问Metabase时就需要重新初始化服务,之前配置的看板,报表的等数据也需要重新配置。
原因:容器的存储空间是独立的,与宿主机的存储空间是分开的。当容器重启时,容器的存储空间会被清空,之前存储在容器中的数据就会丢失。 此时我们就需要对容器配置容器卷,将数据进行持久化。
utf8mb4_unicode_ci
排序规则,utf8mb4
字符集和innodb_large_prefix=ON
;utf8mb4_unicode_ci
排序规则、utf8mb4
字符集和innodb_large_prefix=ON
;这里我们选择是MYSQL数据库作为metabase的生产数据库。
数据库参数配置说明:
1. 在MYSQL中创建名为metabase的数据库.
create database metabase;
ALTER DATABASE metabase CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2. 找到metabase的进程号,并进行kill。
ps -aux|grep metabase
kill -9 PID
3. 在metabase容器中,找到metabase的安装目录。找到metabase H2数据库自带的数据文件对齐进行备份。
cp metabase.db.mv.db metabase.db
4. 指定metabase jar包从MYSQL数据库启动,并从H2数据库对数据进行导入,将H2数据导入至MYSQL。
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中初始化完成。
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服务进行启动。启动后,我们手动重启容器进行验证,发现已经不再有数据丢失的情况。
服务启动后,metabase通过IP:3000进行访问。在公网环境下直接暴露IP与端口会有安全隐患。我们可以通过配置Ingress,通过域名代理metabase后端服务地址。通过域名访问,我们还可以在路由层面进行安全验证。提高访问的安全性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。