Backup & Restore Database Odoo 19 dengan pg_dump
dan pg_restore
(Lengkap, 2025)

Odoo 19 menggunakan PostgreSQL sebagai database. Karena itu, cara paling aman dan cepat untuk mencadangkan (backup) serta memulihkan (restore) adalah memakai utilitas bawaan PostgreSQL: pg_dump
dan pg_restore
. Artikel ini memandu Anda langkah demi langkah untuk Linux/Ubuntu dan Windows, lengkap dengan opsi kompresi, penjadwalan otomatis, serta backup filestore (lampiran/attachment) Odoo.
Prasyarat
- PostgreSQL 14+ terpasang dan utilitas
pg_dump
/pg_restore
tersedia di PATH. - Nama database Odoo (misal:
odoo19_db
) dan user database (misal:odoo19
ataupostgres
). - Akses terminal/Command Prompt dengan hak yang sesuai.
Catatan: pg_dump
melakukan backup konsisten tanpa perlu mematikan Odoo berkat MVCC PostgreSQL. Namun, untuk sistem produksi sibuk, sebaiknya lakukan di luar jam operasional.
Jenis & Format Backup
- Custom format (
-Fc
): fleksibel, dapat direstore sebagian, mendukung kompresi. (Direkomendasikan) - Plain SQL: file .sql yang bisa di-psql langsung, ukuran lebih besar, kurang fleksibel.
Backup di Linux/Ubuntu
1) Custom format (direkomendasikan)
# Variabel contoh
DB=odoo19_db
USER=postgres
HOST=localhost
OUT=~/backup/${DB}_$(date +%F_%H%M).dump
# Backup custom format + kompresi
pg_dump -U "$USER" -h "$HOST" -d "$DB" -Fc -Z 9 -f "$OUT"
echo "Backup tersimpan di: $OUT"
2) Plain SQL
pg_dump -U postgres -h localhost -d odoo19_db -f ~/backup/odoo19_db_$(date +%F).sql
3) Backup beberapa database sekaligus
for DB in odoo19_prod odoo19_staging; do
pg_dump -U postgres -Fc -Z 9 -f ~/backup/${DB}_$(date +%F).dump -d "$DB"
done
Backup di Windows
Jalankan dari Command Prompt atau PowerShell dengan direktori bin
PostgreSQL di PATH (contoh: C:\Program Files\PostgreSQL\15\bin
).
$date = Get-Date -Format "yyyy-MM-dd_HHmm"
$DB = "odoo19_db"
$OUT = "C:\backup\${DB}_$date.dump"
pg_dump.exe -U postgres -h localhost -d $DB -Fc -Z 9 -f $OUT
Write-Host "Backup tersimpan di $OUT"
Backup Filestore Odoo (Lampiran/Attachment)
Selain database, Odoo menyimpan file lampiran di filestore. Lokasi umum:
- Instalasi paket Debian/Ubuntu:
/var/lib/odoo/.local/share/Odoo/filestore/<nama_db>
- Instalasi user lokal:
~/.local/share/Odoo/filestore/<nama_db>
- Windows:
%APPDATA%\Odoo\filestore\<nama_db>
Backup filestore (Linux):
DB=odoo19_db
SRC=~/.local/share/Odoo/filestore/$DB
tar -czf ~/backup/${DB}_filestore_$(date +%F).tar.gz -C "$(dirname "$SRC")" "$(basename "$SRC")"
Restore Database Odoo 19
A. Persiapan database kosong
Buat database kosong dengan encoding UTF-8 dan aktifkan ekstensi yang umum dipakai Odoo (opsional tapi disarankan):
# Buat DB kosong
createdb -U postgres -E UTF8 -T template0 -O odoo19 odoo19_restored
# Masuk psql untuk menyiapkan ekstensi (opsional)
psql -U postgres -d odoo19_restored -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
psql -U postgres -d odoo19_restored -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
B. Restore dari custom dump (.dump)
pg_restore -U postgres -d odoo19_restored \
--no-owner --role=odoo19 -j 4 /path/to/odoo19_db_YYYY-MM-DD.dump
Keterangan: --no-owner
mencegah konflik kepemilikan objek; --role=odoo19
menetapkan pemilik baru. -j 4
paralel 4 proses (sesuaikan CPU).
C. Restore dari plain SQL (.sql)
psql -U postgres -d odoo19_restored -f /path/to/odoo19_db_YYYY-MM-DD.sql
D. Pulihkan filestore
Ekstrak arsip filestore ke lokasi filestore target dengan nama database yang sama:
DB=odoo19_restored
DEST=~/.local/share/Odoo/filestore
mkdir -p "$DEST"
tar -xzf ~/backup/${DB%_restored}_filestore_YYYY-MM-DD.tar.gz -C "$DEST"
# Pastikan folder hasilnya bernama persis $DB jika Anda restore untuk DB baru
mv "$DEST/${DB%_restored}" "$DEST/$DB" 2>/dev/null || true
Setelah database dan filestore siap, jalankan Odoo dan pilih database hasil restore pada layar login.
Menjadwalkan Backup Otomatis
Linux: cron harian jam 02:00
crontab -e
# Tambahkan baris berikut (ubah path sesuai)
0 2 * * * /usr/bin/pg_dump -U postgres -h localhost -d odoo19_db -Fc -Z 9 -f /var/backups/odoo/odoo19_db_$(date +\%F).dump
Windows: Task Scheduler
- Buat Basic Task harian.
- Action: Start a program.
- Program/script:
pg_dump.exe
· Add arguments:-U postgres -h localhost -d odoo19_db -Fc -Z 9 -f "C:\backup\odoo19_db_%DATE%.dump"
Tips Keamanan & Best Practice
- Uji restore berkala. Backup tanpa uji restore = asumsi berisiko.
- Enkripsi & offsite. Simpan salinan di lokasi berbeda (cloud/objek storage) dan enkripsi (mis.
gpg
). - Rotasi retensi. Simpan harian 7 hari, mingguan 4 pekan, bulanan 6–12 bulan (sesuaikan kebijakan).
- Minimalkan downtime. Gunakan
-j
padapg_restore
dan lakukan di jam sepi. - Jangan lupa filestore. Banyak restore gagal karena filestore tidak dibackup.
Troubleshooting Umum
- ERROR: permission denied for schema public → Tambahkan
--no-owner --role=odoo19
saatpg_restore
atau atur pemilik denganALTER DATABASE
. - Encoding/Collation tidak cocok → Buat DB dengan
-E UTF8 -T template0
sebelum restore. - Ekstensi hilang → Jalankan
CREATE EXTENSION unaccent/pg_trgm
di DB target. - File terlalu besar → Gunakan custom format
-Fc
dengan kompresi-Z 9
, atau kompres arsip menggunakanzstd
/gzip
. - Odoo tidak menemukan lampiran → Pastikan folder filestore sesuai nama database hasil restore.
FAQ Singkat
Apakah perlu menghentikan layanan Odoo saat backup?
Tidak wajib. pg_dump
konsisten terhadap transaksi berjalan. Namun, untuk beban tinggi, lakukan di luar jam sibuk agar dump lebih cepat.
Mana yang lebih baik, custom dump atau plain SQL?
Custom dump (-Fc
) umumnya terbaik: ukuran lebih kecil, bisa paralel restore, dan fleksibel memilih objek.
Bagaimana memastikan backup valid?
Lakukan test restore di server staging, cek login, data master, laporan, serta lampiran dari filestore.
comment 0 komentar
more_vert