在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