docker安装的metabase存储从h2改成mysql
在mysql创建好数据库和相关用户,并授权
CREATE DATABASE metabase; CREATE USER metabase@'172.17.0.0/24' IDENTIFIED BY '123456'; GRANT USAGE ON metabase.* TO 'metabase@'172.17.0.0/24'; FLUSH PRIVILEGES;
看一下旧metabase容器的启动参数,history | grep metabase
docker run -d -p 3000:3000 -v /data/metabase-data:/metabase-data -e "MB_DB_FILE=/metabase-data/metabase.db" --name metabase metabase/metabase
我们需要备份的h2文件在容器里的完整路径为/metabase.db/metabase.db.mv.db,备份一下到物理机。
docker cp metabase:/metabase.db/metabase.db.mv.db /data/backup/metabase.db.mv.db
停止、删除旧metabase容器,如果担心有问题的话,不停止删除metabase容器,新建的metabase容器绑定别的端口、命名也不和旧容器同名
docker stop metabase docker rm metabase docker run -d -p 3000:3000 --restart unless-stopped -e "MB_DB_TYPE=mysql" -e "MB_DB_DBNAME=metabase" -e "MB_DB_PORT=3306" -e "MB_DB_USER=metabase" -e "MB_DB_PASS=123456" -e "MB_DB_HOST=172.17.0.1" --name metabase metabase/metabase
创建好新的容器后,将备份的metabase.db.mv.db文件导入到新容器中,在容器里面操作导入数据
docker cp /data/backup/metabase.db.mv.db /tmp/ docker exec -it metabase /bin/bash java -jar /app/metabase.jar load-from-h2 /tmp/metabase.db