Dalam tutorial ini kami akan memandu Anda melalui proses membuat backup secara harian otomatis dari database Odoo. Odoo adalah sistem ERP open-source paling populer yang ditulis dengan Python dan menggunakan PostgreSQL sebagai database  back-end.

Odoo menyimpan datanya dalam database PostgreSQL. Dengan backup database secara teratur akan melindungi Anda dari resiko kehilangan data yang berpotensi bencana dan sangat penting bagi siapa pun dan semua orang yang memiliki instalasi Odoo.

Odoo database management interface

Interface database management Odoo menyediakan alat untuk backup, duplikasi, menghapus, membuat, dan memulihkan database.

Membuat backup menggunakan database management interface adalah hal yang tidak perlu dipikirkan lagi. Cukup buka browser Anda dan arahkan ke http://server_ip:8069/web/database/manager

Anda akan disajikan layar berikut:

database manager backup

Klik pada Backup dan popup baru akan ditampilkan.

Masukkan database Odoo Master Password Anda dan buat cadangan dengan mengklik tombol Backup biru.

Buat Back up Database dari Baris Perintah

Sekarang kita tahu cara membuat backup melalui Odoo database management interface, bagaimana kita bisa menggunakan alat yang sama untuk membuat cadangan dari baris perintah? Jawabannya sederhana. Gunakan wget atau curl. Kedua tools ini dapat mengirim data dengan POST yang dapat kita gunakan untuk meneruskan variabel yang diperlukan ke tools database Odoo.

Dalam contoh di bawah ini, Kata password kami adalah G4NT1_PA$$W0RD dan kita akan membuat file bakc up yang bernama back_up_filename.zip dari database bernama DB_NAME yang akan disimpan di direktori backup_dir.

curl -X POST -F 'master_pwd=G4NT1_PA$$W0RD' -F 'name=DB_NAME' -F 'backup_format=zip' -o /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup

Jika Anda lebih suka menggunakan wget daripada curl, Anda dapat menggunakan perintah berikut:

wget --post-data 'master_pwd=G4NT1_PA$$W0RD&name=DB_NAME&backup_format=zip' -O /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup

Jika Anda ingin membuat backup dari lokasi remote (bukan di localhost), Anda perlu memasukkan URL ke instance Odoo Anda. Dalam hal ini disarankan untuk menggunakan HTTPS karena Anda tidak ingin kata sandi Anda dikirimkan melalui Internet sebagai teks biasa.

Anda dapat menemukan informasi lebih lanjut tentang cara mengkonfigurasi Odoo dengan Nginx sebagai reverse-proxy di sini.

Siapkan Backup Odoo Otomatis

Untuk mengotomatiskan proses pencadangan dan mencadangkan basis data Odoo kami secara berkala, kami dapat membuat cron job.

Katakanlah kita ingin membuat backup database Odoo setiap hari pukul 01:30 pagi dan menyimpan 7 cadangan terbaru.

Kita akan membuat script bash sederhana yang dapat Anda beri nama sesuai keinginan:

nano ~/backup_odoo.sh
#!/bin/bash

# vars
BACKUP_DIR=~/odoo_backups
ODOO_DATABASE=N4m4_D4t@b4s3
ADMIN_PASSWORD=G4NT1_PA$$W0RD

# create a backup directory
mkdir -p ${BACKUP_DIR}

# create a backup
curl -X POST \
    -F "master_pwd=${ADMIN_PASSWORD}" \
    -F "name=${ODOO_DATABASE}" \
    -F "backup_format=zip" \
    -o ${BACKUP_DIR}/${ODOO_DATABASE}.$(date +%F).zip \
    http://localhost:8069/web/database/backup


# delete old backups
find ${BACKUP_DIR} -type f -mtime +7 -name "${ODOO_DATABASE}.*.zip" -delete

Jadikan script dapat dieksekusi dengan chmod:

sudo chmod +x ~/backup_odoo.sh

Jangan lupa mengubah variabel BACKUP_DIR, ODOO_DATABASE, dan G4NT1_PA$$W0RD sesuai kebutuhan Anda.
Langkah terakhir adalah membuat cron job baru yang akan berjalan setiap hari pukul 01:30 pagi:

crontab -e
30 1 * * * /home/<yourusername>/backup_odoo.sh

Jangan lupa untuk mengatur nama dan jalur yang benar ke skrip script.

Anda dapat memodifikasi skrip dan menerapkan solusi backup yang lebih kuat seperti menggunakan penyimpanan backup secara remote, atau menyimpan backup secara mingguan, bulanan, dsb.

Restore Database Odoo

Untuk memulihkan cadangan basis data menggunakan antarmuka manajemen basis data, buka browser Anda dan arahkan ke http://server_ip:8069/web/database/manager.

Klik pada tombol Restore Database dan pop up baru berikut akan muncul

database manager restore

Masukkan database Odoo Master Password Anda, pilih File backup, masukkan Nama Database baru dan pulihkan database dengan mengklik tombol Continue biru.

Sebelum restore database, Anda harus menghapus database atau menggunakan nama database lain. Untuk ambil aman, silahkan membuat database baru dengan nama yang berbeda.

Bergantung pada ukuran database dan kecepatan Internet Anda, proses pemulihan mungkin memakan waktu.

Kami juga dapat mengembalikan database dari baris perintah:

curl -F 'master_pwd=G4NT1_PA$$W0RD' -F backup_file=@/opt/odoo/odoo_backups/db1.2018-04-14.zip -F 'copy=true' -F 'name=db3' http://localhost:8069/web/database/restore

Tentu saja Anda perlu menyesuaikan perintah dengan Master password Odoo Anda, jalur ke backup database dan nama backup.

Jika proses restore berhasil, hasilnya akan terlihat seperti ini:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="/web/database/manager">/web/database/manager</a>.  If not click the link.

Kesimpulan

Tutorial ini memandu Anda membuat backups harian secara otomatis dari database Odoo Anda menggunakan cronjob.