README.rst 2.06 KB

Maintenance

Script ini untuk vacuum dan backup database PostgreSQL. Berikut cara memasangnya:

$ python3 -m venv env
$ env/bin/pip install --upgrade pip
$ env/bin/pip install git+https://git.opensipkd.com/sugiana/maintenance

Buat file konfigurasi maintenance.ini:

[main]
# Perintah yang dijalankan sebelum pg_dump
before =
    /usr/sbin/ntpdate -u ntp.ubuntu.com
    systemctl stop cron.service
    systemctl stop nginx.service

# Perintah yang dijalankan setelah pg_dump
after =
    systemctl start nginx.service
    systemctl start cron.service

pg_stop = systemctl stop postgresql.service
pg_start = systemctl start postgresql.service

pg_lib_dir = /usr/lib/postgresql
pg_conf_dir = /etc/postgresql

# Daftar database yang akan di-vacuum dan di-pg_dump
database =
    pbb
    bphtb
    pad

# Lokasi direktori hasil pg_dump
database_backup_dir = /var/backups/pg

# Jumlah masing-masing database yang tersimpan
database_rotate = 5

[formatter_generic]
format = %(asctime)s %(levelname)s %(message)s

[handler_console]
class = StreamHandler
stream = sys.stdout
formatter = generic

[handler_file]
class = FileHandler
filename = /var/log/maintenance.log
formatter = generic

[logger_root]
handlers = console, file
level = DEBUG

Konfigurasi ini dibuat untuk Debian 8 ke atas yaitu yang sudah menerapkan systemd. Sesuaikan baris database yang berisi nama database yang akan di-backup. Baris before biasanya diisi dengan perintah untuk menghentikan daemon yang menggunakan database, sedangkan baris after untuk menghidupkannya kembali setelah proses backup selesai.

Selanjutnya jalankan sebagai root:

$ sudo env/bin/maintenance maintenance.ini

Daftarkan di cron pada jam 1:45 saat dimana kegiatan transaksi jarang dilakukan. Contohnya di /etc/cron.d/maintenance berikut ini:

MAILTO=""
45 1 * * * root cd /home/sugiana/2020/08 && env/bin/maintenance maintenance.ini >/dev/null 2>&1

Semoga berhasil.