1. Metabase简介与版本说明
Metabase是一款开源的商业智能和数据分析工具,让每个人都能轻松探索和可视化数据。更多学习教程www.fgedu.net.cn。Metabase提供直观的用户界面,无需编写SQL即可创建图表和仪表盘,非常适合非技术人员使用。
Metabase支持多种数据库,包括MySQL、PostgreSQL、MongoDB、BigQuery、Snowflake等。学习交流加群风哥微信: itpux-com。它具有零代码可视化、自动洞察、嵌入式分析等功能,是企业数据分析的理想选择。
Metabase核心特性:
– 自动洞察:自动发现数据规律
– 交互式仪表盘:拖拽式仪表盘创建
– SQL编辑器:支持高级SQL查询
– 嵌入式分析:支持将图表嵌入第三方应用
– 多数据源:支持20+数据库类型
– 权限控制:细粒度的数据权限管理
– 告警通知:支持邮件和Slack告警
– 定时报告:支持定时发送报告
– 自定义可视化:支持自定义图表
Metabase架构组件:
Web Server Web服务器,提供HTTP服务
Application DB 应用数据库,存储配置信息
Data Warehouse 数据仓库,分析的数据源
Query Processor 查询处理器,执行查询
Visualization 可视化引擎,渲染图表
Scheduler 调度器,处理定时任务
2. Metabase版本选择与下载地址
Metabase采用快速迭代发布模式,当前最新稳定版本为0.59.x系列。
Metabase版本状态:
0.59.5 2026-XX-XX 最新稳定版
0.58.11 2026-XX-XX 稳定版
0.57.12 2026-02-12 稳定版
0.55.x 2025-06-11 旧版支持
Metabase 0.59主要更新:
– 性能优化
– 新增可视化类型
– 数据库连接路由
– 开发实例支持
– 安全性增强
– Bug修复
官方下载地址:
下载页面:https://www.metabase.com/start/oss/jar
源码仓库:https://github.com/metabase/metabase
文档中心:https://www.metabase.com/docs/
Docker镜像:https://hub.docker.com/r/metabase/metabase
3. Metabase下载方式详解
方式一:下载JAR包(推荐快速部署)
$ cd /fgeudb/software
$ wget https://downloads.metabase.com/v0.59.5/metabase.jar
输出示例如下:
–2026-04-04 10:00:00– https://downloads.metabase.com/v0.59.5/metabase.jar
Resolving downloads.metabase.com… 104.18.32.7
Connecting to downloads.metabase.com|104.18.32.7|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 234567890 (224M) [application/java-archive]
Saving to: ‘metabase.jar’
metabase.jar 100%[======================================================================>] 223.78M 25.6MB/s in 9s
2026-04-04 10:00:10 (25.6 MB/s) – ‘metabase.jar’ saved [234567890/234567890]
验证下载:
$ ls -lh metabase.jar
输出示例如下:
-rw-r–r– 1 user user 224M Apr 4 10:00 metabase.jar
移动到安装目录:
$ mkdir -p /fgeudb/metabase
$ mv metabase.jar /fgeudb/metabase/
方式二:Docker容器部署
$ docker pull metabase/metabase:v0.59.5
输出示例如下:
v0.59.5: Pulling from metabase/metabase
Digest: sha256:abc123def456…
Status: Downloaded newer image for metabase/metabase:v0.59.5
启动Metabase容器:
$ docker run –name metabase \
-p 3000:3000 \
-v /fgeudb/metabase/data:/metabase-data \
-e “MB_DB_TYPE=mysql” \
-e “MB_DB_DBNAME=metabase” \
-e “MB_DB_PORT=3306” \
-e “MB_DB_USER=metabase” \
-e “MB_DB_PASS=metabase123” \
-e “MB_DB_HOST=192.168.1.51” \
-d metabase/metabase:v0.59.5
输出示例如下:
abc123def456789…
查看容器状态:
$ docker ps | grep metabase
输出示例如下:
abc123def456 metabase/metabase:v0.59.5 “/app/run.sh” 10 seconds ago Up 9 seconds 0.0.0.0:3000->3000/tcp metabase
方式三:Docker Compose部署
$ vi /fgeudb/metabase/docker-compose.yml
version: ‘3.8’
services:
metabase:
image: metabase/metabase:v0.59.5
container_name: metabase
ports:
– “3000:3000”
environment:
– MB_DB_TYPE=mysql
– MB_DB_DBNAME=metabase
– MB_DB_PORT=3306
– MB_DB_USER=metabase
– MB_DB_PASS=metabase123
– MB_DB_HOST=mysql
– JAVA_TIMEZONE=Asia/Shanghai
– MB_JETTY_PORT=3000
volumes:
– ./data:/metabase-data
depends_on:
– mysql
restart: always
mysql:
image: mysql:8.0
container_name: metabase-mysql
environment:
– MYSQL_ROOT_PASSWORD=root123
– MYSQL_DATABASE=metabase
– MYSQL_USER=metabase
– MYSQL_PASSWORD=metabase123
volumes:
– ./mysql_data:/var/lib/mysql
restart: always
启动服务:
$ cd /fgeudb/metabase
$ docker-compose up -d
输出示例如下:
Creating metabase-mysql … done
Creating metabase … done
4. Metabase安装部署实战
步骤1:安装Java环境
# yum install -y java-17-openjdk java-17-openjdk-devel
或Ubuntu/Debian:
# apt install -y openjdk-17-jdk
验证Java版本:
$ java -version
输出示例如下:
openjdk version “17.0.10” 2026-01-16
OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-120.04.1)
OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-120.04.1, mixed mode, sharing)
设置JAVA_HOME:
# vi /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
使配置生效:
$ source /etc/profile.d/java.sh
步骤2:配置应用数据库
# yum install -y mysql-server
# systemctl start mysqld
# systemctl enable mysqld
创建Metabase数据库:
# mysql -u root -p
mysql> CREATE DATABASE metabase DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> CREATE USER ‘metabase’@’%’ IDENTIFIED BY ‘metabase123’;
mysql> GRANT ALL PRIVILEGES ON metabase.* TO ‘metabase’@’%’;
mysql> FLUSH PRIVILEGES;
创建目录结构:
# mkdir -p /fgeudb/metabase/{data,logs,plugins}
# chown -R metabase:metabase /fgeudb/metabase
步骤3:配置Metabase环境变量
$ vi /fgeudb/metabase/metabase.env
数据库配置:
MB_DB_TYPE=mysql
MB_DB_DBNAME=metabase
MB_DB_PORT=3306
MB_DB_USER=metabase
MB_DB_PASS=metabase123
MB_DB_HOST=192.168.1.51
服务配置:
MB_JETTY_PORT=3000
MB_JETTY_HOST=0.0.0.0
JAVA_TIMEZONE=Asia/Shanghai
内存配置:
JAVA_OPTS=-Xmx2g -Xms1g
日志配置:
MB_LOG_LEVEL=INFO
MB_SEND_EMAIL_ON_FIRST_LOGIN=true
安全配置:
MB_ADMIN_EMAIL=admin@fgedu.net.cn
MB_SITE_URL=http://192.168.1.51:3000
加载环境变量:
$ source /fgeudb/metabase/metabase.env
步骤4:启动Metabase服务
$ cd /fgeudb/metabase
$ java -jar metabase.jar
输出示例如下:
2026-04-04 10:05:00,000 INFO metabase.util :: Metabase v0.59.5 (fgedu.net.cn)
2026-04-04 10:05:00,100 INFO metabase.driver :: Initializing driver :mysql
2026-04-04 10:05:00,200 INFO metabase.core :: Setting up and migrating Metabase DB. Please sit tight, this may take a minute…
2026-04-04 10:05:01,000 INFO metabase.core :: Metabase is ready for use!
2026-04-04 10:05:01,100 INFO metabase.server :: Metabase Server listening on port 3000
后台运行:
$ nohup java -jar metabase.jar > /fgeudb/metabase/logs/metabase.log 2>&1 &
访问Web界面:
打开浏览器访问:http://192.168.1.51:3000
首次访问需要进行初始化设置
步骤5:配置systemd服务
# vi /etc/systemd/system/metabase.service
[Unit]
Description=Metabase Server
After=network.target mysql.service
[Service]
Type=simple
User=metabase
Group=metabase
EnvironmentFile=/fgeudb/metabase/metabase.env
ExecStart=/usr/bin/java -jar /fgeudb/metabase/metabase.jar
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
重载并启动服务:
# systemctl daemon-reload
# systemctl start metabase
# systemctl enable metabase
查看服务状态:
# systemctl status metabase
输出示例如下:
● metabase.service – Metabase Server
Loaded: loaded (/etc/systemd/system/metabase.service; enabled)
Active: active (running) since Fri 2026-04-04 10:10:00 CST; 10s ago
Main PID: 12345 (java)
CGroup: /system.slice/metabase.service
└─12345 /usr/bin/java -jar /fgeudb/metabase/metabase.jar
5. Metabase配置文件详解
核心环境变量
MB_DB_TYPE=mysql 数据库类型
MB_DB_DBNAME=metabase 数据库名称
MB_DB_PORT=3306 数据库端口
MB_DB_USER=metabase 数据库用户
MB_DB_PASS=metabase123 数据库密码
MB_DB_HOST=192.168.1.51 数据库主机
服务配置:
MB_JETTY_PORT=3000 HTTP端口
MB_JETTY_HOST=0.0.0.0 绑定地址
MB_JETTY_MAX_THREADS=254 最大线程数
MB_JETTY_MIN_THREADS=8 最小线程数
MB_JETTY_MAX_QUEUED=-1 队列大小
内存配置:
JAVA_OPTS=-Xmx4g -Xms2g JVM参数
安全配置:
MB_ADMIN_EMAIL=admin@fgedu.net.cn 管理员邮箱
MB_SITE_URL=http://192.168.1.51:3000 站点URL
MB_PASSWORD_COMPLEXITY=weak 密码复杂度
MB_PASSWORD_LENGTH=6 密码最小长度
邮件配置:
MB_EMAIL_SMTP_HOST=smtp.fgedu.net.cn SMTP服务器
MB_EMAIL_SMTP_PORT=587 SMTP端口
MB_EMAIL_SMTP_USER=noreply@fgedu.net.cn SMTP用户
MB_EMAIL_SMTP_PASSWORD=smtp_password SMTP密码
MB_EMAIL_FROM_ADDRESS=noreply@fgedu.net.cn 发件人地址
高级配置
MB_QUERY_CACHING_ENABLED=true 启用查询缓存
MB_QUERY_CACHING_MAX_KB=10240 缓存最大KB
MB_QUERY_CACHING_MAX_TTL=86400 缓存最大TTL
性能配置:
MB_ASYNC_QUERY_THREAD_POOL_SIZE=8 异步查询线程池
MB_ASYNC_QUERY_RESPONSE_TIMEOUT=600 异步查询超时
日志配置:
MB_LOG_LEVEL=INFO 日志级别
MB_LOG_FORMAT=default 日志格式
插件配置:
MB_PLUGINS_DIR=/fgeudb/metabase/plugins 插件目录
SSL配置:
MB_JETTY_SSL=true 启用SSL
MB_JETTY_SSL_PORT=8443 SSL端口
MB_JETTY_SSL_KEYSTORE=/path/to/keystore 密钥库路径
MB_JETTY_SSL_KEYSTORE_PASSWORD=changeit 密钥库密码
6. Metabase仪表盘创建实战
步骤1:初始化设置
1. 打开浏览器访问:http://192.168.1.51:3000
2. 点击”Let’s get started”
3. 设置管理员账户:
– First name: Admin
– Last name: User
– Email: admin@fgedu.net.cn
– Password: admin123
– Confirm password: admin123
4. 点击”Next”
5. 添加数据源:
– 选择数据库类型:MySQL
– Host: 192.168.1.51
– Port: 3306
– Database name: fgedu_db
– Username: metabase
– Password: metabase123
6. 点击”Next”
7. 完成设置
步骤2:添加数据源
1. 点击右上角齿轮图标 -> “Admin settings”
2. 点击”Databases” -> “Add a database”
3. 选择数据库类型
4. 配置连接信息:
– Name: MySQL
– Host: 192.168.1.51
– Port: 3306
– Database: fgedu_db
– Username: metabase
– Password: metabase123
5. 点击”Save”
支持的数据源:
– MySQL
– PostgreSQL
– MongoDB
– SQL Server
– Oracle
– BigQuery
– Snowflake
– Redshift
– SQLite
– H2
– Druid
– Google Analytics
– SparkSQL
– Presto
– ClickHouse
步骤3:创建问题(查询)
1. 点击”New” -> “Question”
2. 选择数据源: MySQL
3. 选择表:sales_data
4. 选择可视化类型:
– Raw Data:原始数据
– Summarize:聚合统计
– Filter:筛选条件
5. 配置查询:
– 选择度量:Sum of sales_amount
– 选择维度:sales_date
– 添加筛选:sales_date >= 2026-01-01
6. 点击”Visualize”查看结果
7. 点击”Save”保存问题
使用SQL查询:
1. 点击”New” -> “Question”
2. 点击”Native query”
3. 选择数据源
4. 输入SQL:
SELECT
sales_date,
SUM(sales_amount) as total_sales,
COUNT(*) as order_count
FROM sales_data
WHERE sales_date >= ‘2026-01-01’
GROUP BY sales_date
ORDER BY sales_date
5. 点击”Run”执行
6. 点击”Save”保存
步骤4:创建仪表盘
1. 点击”New” -> “Dashboard”
2. 输入仪表盘名称:销售数据分析
3. 点击”Create”
4. 点击”Add a question”
5. 选择已保存的问题
6. 调整图表大小和位置
7. 添加筛选器:
– 点击”Add a filter”
– 选择筛选类型:Date
– 连接到相关字段
8. 点击”Save”保存
仪表盘配置:
– 设置自动刷新间隔
– 配置公共链接
– 设置权限
– 添加文本说明
– 配置订阅
步骤5:配置告警
1. 打开需要监控的问题
2. 点击右上角铃铛图标
3. 点击”Set up an alert”
4. 配置告警条件:
– Goal line: 设置目标线
– Alert when: 选择触发条件
5. 配置通知方式:
– Email: 发送邮件
– Slack: 发送到Slack
6. 设置检查频率
7. 点击”Done”保存
告警配置示例:
– 当销售额低于目标值时发送告警
– 当数据异常时发送通知
– 定期发送数据报告
7. 安装验证与测试
查看Metabase状态
$ ps -ef | grep metabase
输出示例如下:
metabase 12345 1 5 10:10 ? 00:00:30 /usr/bin/java -jar /fgeudb/metabase/metabase.jar
查看端口监听:
$ netstat -tlnp | grep 3000
输出示例如下:
tcp6 0 0 :::3000 :::* LISTEN 12345/java
访问Web界面:
打开浏览器访问:http://192.168.1.51:3000
检查API:
$ curl http://192.168.1.51:3000/api/health
输出示例如下:
{“status”:”ok”}
检查版本:
$ curl http://192.168.1.51:3000/api/session/properties | grep version
输出示例如下:
“version”:”0.59.5″
功能测试
1. 登录Metabase
2. 进入Admin Settings -> Databases
3. 点击”Sync database schema now”
4. 验证同步成功
测试查询功能:
1. 创建测试问题
2. 执行查询
3. 验证结果正确
测试仪表盘:
1. 创建测试仪表盘
2. 添加问题
3. 测试筛选功能
4. 验证数据刷新
测试告警:
1. 创建测试告警
2. 触发告警条件
3. 验证通知发送
8. 常见问题与解决方案
问题1:启动失败
解决方案:
1. 检查Java版本:
$ java -version
需要JDK 11或17
2. 检查数据库连接:
$ mysql -u metabase -p -h 192.168.1.51
3. 检查日志:
$ tail -f /fgeudb/metabase/logs/metabase.log
4. 检查端口占用:
$ netstat -tlnp | grep 3000
5. 检查内存:
增加JVM内存:-Xmx4g
问题2:数据库连接失败
解决方案:
1. 检查数据库服务:
# systemctl status mysql
2. 检查网络连通性:
$ telnet 192.168.1.51 3306
3. 检查用户权限:
mysql> SHOW GRANTS FOR ‘metabase’@’%’;
4. 检查防火墙:
# firewall-cmd –add-port=3306/tcp –permanent
# firewall-cmd –reload
5. 检查SSL配置:
如果数据库需要SSL,配置SSL参数
问题3:查询超时
解决方案:
1. 增加超时时间:
MB_ASYNC_QUERY_RESPONSE_TIMEOUT=1200
2. 优化查询:
– 添加索引
– 减少数据量
– 使用聚合表
3. 启用缓存:
MB_QUERY_CACHING_ENABLED=true
4. 增加线程池:
MB_ASYNC_QUERY_THREAD_POOL_SIZE=16
Metabase管理命令
# systemctl start metabase
停止服务:
# systemctl stop metabase
重启服务:
# systemctl restart metabase
查看状态:
# systemctl status metabase
查看日志:
$ tail -f /fgeudb/metabase/logs/metabase.log
备份数据库:
$ mysqldump -u metabase -p metabase > metabase_backup.sql
恢复数据库:
$ mysql -u metabase -p metabase < metabase_backup.sql
重置管理员密码:
1. 停止Metabase服务
2. 连接应用数据库
3. 更新密码:
UPDATE metabase_database SET password_digest = NULL WHERE id = 1;
4. 启动服务
5. 使用新密码登录
1. 使用Metabase 0.59.5最新稳定版本;2. 使用MySQL作为应用数据库;3. 配置JVM内存参数;4. 启用查询缓存;5. 配置邮件通知服务;6. 定期备份应用数据库;7. 配置HTTPS安全访问;8. 设置合理的权限控制;9. 监控服务运行状态;10. 定期更新版本修复漏洞。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
