Belajar Bacula - Troubleshooting & Debug
Episode 16 of 23

Belajar Bacula - Troubleshooting & Debug

Episode ini mengajarkan troubleshooting Bacula: mode debug bacula-dir -d, log di /var/log/bacula/, diagnosa lewat bconsole status, kasus umum (autentikasi gagal, tape penuh, catalog lock), serta recovery catalog dari backup catalog dan restore dari tape saat bencana terjadi.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Di episode 15 kita membangun sistem yang besar. Dan sistem besar akan jatuh — pertanyaannya bukan "apakah", melainkan "seberapa cepat kalian menemukan akar masalahnya". Di episode 16 kita mempertajam kemampuan troubleshooting: membaca log, menjalankan debug, mengenali pola kegagalan umum, dan yang terpenting — pulih dari kegagalan catalog. Troubleshooting yang baik bukan menghafal error, melainkan menguasai alat dan urutan diagnosa.

Alat Diagnosa

Mode Debug

Setiap daemon Bacula punya opsi -d dengan level 0-200+. Semakin tinggi, semakin banyak detail:

Debug Director level 100
sudo bacula-dir -d 100

Perintah ini menjalankan Director di foreground dengan debug penuh — termasuk detail koneksi, autentikasi, dan keputusan job. Level umum:

  • -d 0 — normal.
  • -d 20 — detail job dan koneksi.
  • -d 100 — sangat rinci; siapkan output besar.
  • -d 200 — hujan byte; hanya untuk kasus ekstrem.

bacula-sd -d 100 dan bacula-fd -d 100 juga tersedia. Jangan jalankan debug di production saat jam kerja tanpa log capture — outputnya bisa memenuhi terminal dengan cepat.

Log di /var/log/bacula/

Rutinitas pertama saat ada masalah adalah membaca log sesuai resource Messages:

Log utama Bacula
sudo tail -50 /var/log/bacula/bacula.log
sudo grep -iE "error|fatal|warning" /var/log/bacula/bacula.log | tail -30

Untuk masalah job spesifik, gunakan bconsole:

Pesan job tertentu
* messages jobid=42

status via bconsole

Diagnosa status lengkap
* status dir
* status sd
* status client=web-01-fd
* list volumes
* list jobs

Urutan diagnosa yang disarankan: status Director → status Storage → status Client → list volumes. Biasanya salah satu dari empat ini langsung mengungkap lokasi masalah.

Note

Urutan diagnosa itu penting. Jangan langsung mengganti password atau me-restart daemon sebelum membaca status. Sebagian besar insiden Bacula adalah "salah satu komponen tidak tersedia" — dan itu selalu terlihat di status.

Kasus Umum dan Solusinya

1. Autentikasi Gagal (Authorization problem)

Error autentikasi
bacula-dir: Authorization problem with: client "web-01-fd"

Penyebab paling umum: password antara resource Client (di dir) dan resource Director (di fd) tidak cocok, atau nama resource salah. Periksa:

Bandingkan password
grep -A3 'Client {' /etc/bacula/bacula-dir.conf
grep -A3 'Director {' /etc/bacula/bacula-fd.conf

2. Tape Penuh / Tidak Ada Volume Tersedia

Error volume habis
Device "TapeDrive" is not able to find a Volume to write to.

Penyebab: semua volume di pool penuh atau sedang di-retention. Solusi: tambah volume, perpanjang pool, atau pangkas retention (hati-hati):

Periksa dan tambah volume
* list volumes pool=TapePool
* label pool=TapePool

3. Catalog Lock

Error catalog lock
sqlite3_backup: database table is locked

Untuk SQLite, ini terjadi saat beberapa proses mengakses database bersamaan — pastikan hanya satu Direktor berjalan dan kurangi concurrent job yang memicu catalog (episode 20). Untuk PostgreSQL/MySQL, lock lebih jarang; periksa transaksi yang menggantung:

Cek lock di PostgreSQL
SELECT pid, state, wait_event FROM pg_stat_activity WHERE state <> 'idle';

4. Daemon Tidak Bisa Start

Validasi sebelum start
sudo bacula-dir -t
sudo bacula-sd -t
sudo bacula-fd -t
journalctl -u bacula-director --no-pager | tail

Validasi config + log systemd selalu mengungkap penyebab — biasanya kurung kurawal tidak seimbang atau resource referensi yang belum ada.

Recovery Catalog

Skenario

Catalog hilang (disk rusak, database terhapus) — tapi backup catalog (episode 9) tersedia. Inilah saatnya investasi itu kembali.

Langkah Pemulihan

  1. Instal ulang/siapkan database baru dengan skema kosong:
Buat catalog baru
sudo -u postgres createdb bacula_new
sudo -u postgres psql -f /usr/share/bacula-director/create_postgresql_database bacula_new
  1. Restore backup catalog ke database baru. Jika backup catalog berupa pg_dump, cukup:
Restore dari dump catalog
sudo -u postgres psql -d bacula_new -f /tmp/catalog-restore.sql
  1. Arahkan Director ke catalog baru lewat resource Catalog, validasi, dan restart.

  2. Verifikasi: list jobs, list volumes harus menampilkan sejarah sebelum bencana. Jika hanya ada backup catalog dalam bentuk volume Bacula (bukan pg_dump), restore dulu volume-nya ke lokasi temporary menggunakan bconsole, baru import dump-nya.

Danger

Jika catalog hilang dan tidak ada backup catalog, kalian masih punya data di volume — tapi tidak tahu isinya. Jangan panik dan jangan menimpa volume. Bacula menyediakan bscan untuk memindai ulang volume mentah dan membangun ulang catalog — proses lambat tapi bisa menyelamatkan. Selalu jadwalkan backup catalog.

Restore dari Tape

Saat media yang dibutuhkan ada di tape, restore melibatkan changer:

Restore dari tape
* restore
... pilih JobId ...
... Bacula meminta mount tape yang benar ...

Bacula akan mencari volume yang memuat job tersebut di catalog, meminta tape dari changer (AutomaticMount = yes mempermudah), memindainya, lalu menyalin data. Jika tape ada di rak (bukan di changer), operator harus memasukkan tape — inilah kenapa rotasi tape dan pelabelan fisik yang rapi (episode 11) sangat berharga di saat genting.

Penutup

Inti yang harus dibawa pulang:

  • -d 100 memberi detail koneksi/job; mulai dari level rendah lalu naik.
  • Log ada di /var/log/bacula/; messages jobid=N menunjuk job tertentu.
  • Urutan diagnosa: status dir → sd → client → volumes.
  • Kasus umum: auth mismatch (password/name), volume habis, catalog lock, config invalid.
  • Recovery catalog butuh backup catalog; tanpa itu, bscan adalah jalan terakhir.

Di episode 17 selanjutnya kita akan menelaah Bacula 15.0.x dan fitur terbarunya — rilis 15.0.4 (23 Mei 2026) dengan bug fixes dan improvements, lompatan 15.0.0 pada unified catalog dan performa besar, riwayat seri 13.x dan 11.x, serta matriks fitur Community versus Enterprise. Inilah peta versi yang harus kalian pahami untuk keputusan upgrade.

Belajar Bacula - Troubleshooting & Debug | Belajar Bacula