You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Metabase v0.41.2从H2数据库迁移到MySQL时卡在运行迁移步骤如何解决

问题原因
  • 目标MySQL配置不符合要求:未使用utf8mb4字符集、版本与Metabase v0.41.2不兼容、连接参数缺失、数据库权限不足,或者innodb_buffer_pool_size配置过小导致大表迁移执行过慢,看似卡住。
  • H2数据库文件异常:原Metabase进程未完全停止导致H2文件被占用、H2文件损坏、存储的历史数据量过大,Windows环境下IO性能不足引发迁移假死。
  • 迁移环境配置错误:未正确配置目标MySQL的连接环境变量,或H2文件路径填写错误,导致迁移流程无法正常读取写入数据。
  • 版本自身bug:Metabase v0.41.2的load-from-h2命令在Windows环境下存在已知兼容性问题,Liquibase迁移脚本执行无报错但无法推进。
解决方法
  • 先停止所有正在运行的Metabase进程,通过Windows资源管理器确认H2数据库文件(metabase.db.mv.db)无程序占用,迁移前提前备份原H2文件避免数据丢失。
  • 调整目标MySQL配置:
    • 确保MySQL版本为5.7或8.0,与Metabase v0.41.2兼容
    • 创建迁移库时指定字符集和排序规则:CREATE DATABASE metabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • 给迁移用户授予全量权限:GRANT ALL PRIVILEGES ON metabase.* TO '你的用户名'@'%'; FLUSH PRIVILEGES;
    • 临时调大innodb_buffer_pool_size参数到物理内存的50%,提升迁移IO性能。
  • 执行迁移前先在当前命令行窗口配置目标库环境变量,Windows cmd环境下配置命令如下:
set MB_DB_TYPE=mysql
set MB_DB_DBNAME=metabase
set MB_DB_HOST=127.0.0.1
set MB_DB_PORT=3306
set MB_DB_USER=你的数据库用户名
set MB_DB_PASS=你的数据库密码
set MB_DB_CONNECTION_URI="jdbc:mysql://127.0.0.1:3306/metabase?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8mb4"
  • 填写H2路径时不需要加.mv.db后缀,例如你的H2文件路径为C:\metabase\metabase.db.mv.db,迁移命令应写为:java -jar metabase.jar load-from-h2 C:\\metabase\\metabase.db
  • 若仍无法推进,可将Metabase包升级到同分支的v0.41.6小版本,该版本修复了多个迁移兼容性bug,替换jar包后重新执行迁移命令即可。
  • 若原H2文件体积超过1G,可先启动原Metabase服务,清理掉不需要的查询历史、过期日志数据后再执行迁移,大幅降低迁移耗时。

内容的提问来源于stack exchange,提问作者MemZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:45:11