Showing posts with label metabase with docker. Show all posts
Showing posts with label metabase with docker. Show all posts

Monday, November 11, 2019

Metabase - Shifting your metabase docker container with existing data

1) Export the docker container from source instance as .gz
docker export containerid | gzip > containername.gz
2) Import the docker container into destination instance.
zcat containername.gz | docker import - imagename
3) Run the container as mapped port 3000
sudo docker run -it -p 3000:3000 6cf7f6ca9351 /bin/bash
where 6cf7f6ca9351 is image id.
4) Start the container and attach yourself into it.
docker start containerid
docker attach containerid

5) If you will run the file metabase.jar
java -jar metabase.jar
and if it creates new files metabase.db.mv.db and metabase.db.trace.db, it means metabase is starting the setup. It will be the fresh metabase installation so your old created dashboards and questions will not be visible.
You need to find the files of existing database i.e. metabase.db.mv.db, metabase.db.trace.db in the container which will be large in size. These are existing db files, you need to make metabase used these files as a database then only metabase will be run from the current state.
If you have started metabase and it has created new db files, stop the metabase and replace new files with existing files.

6) Start metabase again.
Once "Metabase Initialization COMPLETE" message appears and you go on login page instead of setup, old metabase is back.
You can login with existing details. Now make changes in database credentials from admin panel if database is changed on new instance, dashboards and questions will start showing your data from changed database.

Errors :
1) Connections could not be acquired from the underlying database.
Solution : Make sure metabase is able to make connection to database.

2) Java heap space memory issues.
Solution : RAM should be sufficient.
You can assign RAM to metabase while running it.
Generally, leaving 1-2 GB of RAM for these other processes should be enough; for example, you might set -Xmx to 1g for an instance with 2 GB of RAM, 2g for one with 4 GB of RAM, 6g for an instance with 8 GB of RAM, and so forth. You may need to experiment with these settings a bit to find the right number.
For 2GB RAM
java -Xmx1g -jar metabase.jar
More accute solution :
java -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/a/directory -jar metabase.jar