Metabase adalah tools data analytics yang biasa digunakan oleh beberapa perusahaan untuk meringkas dan memvisualisasikan data tanpa menyentuh Database secara langsung. Metabase secara default menggunakan database H2, yang ideal untuk uji coba awal namun tidak direkomendasikan untuk Production karena rawan corrupt dan tidak cocok untuk multi-user. Di artikel ini, kita akan memigrasikan database H2 ke PostgreSQL dan upgrade ke versi terbaru Metabase.
Langkah 1: Backup Database H2 dari Docker
Jika kita menjalankan Metabase via Docker dan ingin backup databasenya:
docker cp metabase:/metabase.db/metabase.db.mv.db ./
Ini akan menyalin file database H2 dari container Docker ke direktori lokal saat ini.
Langkah 2: Persiapkan Database PostgreSQL
Siapkan database PostgreSQL versi 12 atau lebih tinggi, dan buat database khusus untuk Metabase. Contoh:
CREATE DATABASE metabase;
CREATE USER metabase WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE metabase TO metabase;
Pastikan listen_addresses = '*' di file postgresql.conf, dan atur pg_hba.conf agar mengizinkan koneksi eksternal:
# Tambahkan ini di akhir file pg_hba.conf
host all all 0.0.0.0/0 md5
Jangan lupa restart PostgreSQL:
sudo systemctl restart postgresql
Langkah 3: Download Versi Metabase Sesuai
Download file .jar dari Metabase yang sesuai dengan versi yang kita inginkan di https://www.metabase.com/start/oss/. Contoh:
wget https://downloads.metabase.com/v0.54.4.2/metabase.jar
Langkah 4: Migrasi H2 ke PostgreSQL
Jalankan perintah migrasi berikut:
export MB_DB_TYPE=postgres
export MB_DB_CONNECTION_URI="jdbc:postgresql://127.0.0.1:5432/metabase?user=metabase&password=password"
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar load-from-h2 /path/to/metabase.db
Penting: Jangan tambahkan
.mv.dbdi path database H2, cukup sampaimetabase.db.
Langkah 5: Jalankan Metabase dengan Docker Compose
Setelah migrasi selesai, kamu bisa menjalankan Metabase dengan konfigurasi berikut:
version: "3"
services:
metabase:
image: metabase/metabase:v0.54.4.2
container_name: metabase
restart: always
volumes:
- /dev/urandom:/dev/random:ro
ports:
- 3000:3000
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabase
MB_DB_PORT: 5432
MB_DB_USER: metabase
MB_DB_PASS: password
MB_DB_HOST: 127.0.0.1
healthcheck:
test: curl --fail -I http://localhost:3000/api/health || exit 1
interval: 15s
timeout: 5s
retries: 5
networks:
default:
driver: bridge
Jika berhasil, data dari H2 akan dimigrasikan ke PostgreSQL. Kita akan melihat log seperti “Migration complete”.

Admin website igunawan.com, System Administrator, DevOps Engineer
