Episode ini membawa pgBackRest ke skala terabyte: parallel backup yang memanfaatkan banyak resource, tuning process-max berdasarkan CPU dan I/O, optimasi restore dengan --delta, dan benchmark yang mengukur durasi backup/restore terhadap ukuran database. Optimasi dimulai dari data terukur, bukan tebakan.

Semua yang kita pelajari bekerja indah untuk database kecil-menengah. Tetapi saat data menembus ratusan gigabyte hingga terabyte, aturan main berubah: satu file besar, banyak file kecil, bandwidth terbatas, dan jendela backup yang sempit. Di episode 19 kita membawa pgBackRest ke skala itu — dengan parallelism yang diukur, delta optimization, dan benchmark yang mengubah intuisi menjadi angka.
Filosofi episode ini: optimasi tanpa pengukuran adalah opini. Setiap keputusan — berapa process-max, apakah perlu level kompresi lebih tinggi, kapan pakai --delta — harus didukung data dari benchmark kalian sendiri.
Pada database terabyte, waktu backup ditentukan oleh:
Uji bertahap pada database yang sama di window yang sama:
sudo -u postgres pgbackrest --stanza=main --process-max=2 backup --type=diff
sudo -u postgres pgbackrest --stanza=main --process-max=4 backup --type=diff
sudo -u postgres pgbackrest --stanza=main --process-max=8 backup --type=diffCatat durasi setiap percobaan (ada di output command). Kurva khasnya: durasi turun lalu mendatar — di titik mendatar itulah bottleneck pindah dari CPU ke I/O/network, dan menambah process-max tidak lagi membantu.
Tip
Aturan praktis untuk memulai: process-max sekitar setengah jumlah core jika storage adalah NVMe lokal, atau lebih rendah jika menulis ke NFS/S3 yang bandwidth-nya terbatas. Naikkan bertahap dan berhenti di titik mendatar — bukan di titik maksimum.
process-max yang terlalu tinggi mengganggu workload produksi. Dua strategi:
process-max besar saat traffic rendah (episode 10).--process-max yang lebih rendah di jam sibuk, lebih tinggi di window backup — tanpa mengubah config:sudo -u postgres pgbackrest --stanza=main --process-max=16 backup --type=fullUntuk database besar, full restore (menyalin semua file dari repository) bisa memakan waktu berjam-jam. --delta (episode 8) mengubah permainan: ia membandingkan file lokal dengan backup dan hanya menimpa yang berbeda. Untuk cluster yang sebagian besar masih utuh, ini bisa memangkas RTO secara dramatis.
sudo -u postgres pgbackrest --stanza=main --delta restoreAgar --delta bekerja optimal:
data_checksums=on) sehingga delta membandingkan dengan percaya diri.--delta tetap dipakai — ia hanya mempercepat penyalinan file, bukan mengubah logika recovery.Di cluster HA (episode 18), delta restore menjadi senjata andalan bootstrap node baru: restore ke PGDATA existing, lalu streaming catch-up dari primary. Waktu untuk menumbuhkan node turun dari "jam" ke "menit".
Benchmark yang baik punya tiga ciri: variabel tunggal, data nyata, dan diulang. Rancang tabel pencatatan:
CREATE TABLE bench_backup (
dt timestamptz default now(),
db_size_gb numeric,
type text,
process_max int,
duration_sec numeric
);Lalu catat setiap backup dengan query ke pg_database_size:
psql -U postgres -tAc \
"INSERT INTO bench_backup (db_size_gb, type, process_max, duration_sec)
VALUES (round(pg_database_size('aplikasi')/1e9,2), 'full', 8, $DURATION);"Plot durasi terhadap ukuran untuk tiap tipe. Pola yang harus kalian pahami:
Ukuran (GB) Full (mnt) Diff (mnt) Restore (mnt)
250 18 4 21
500 36 5 42
1000 72 6 85Dari data ini, perkiraan RTO di episode 10 bisa dihitung bukan dengan tebakan: jika restore 1 TB butuh 85 menit, RTO kalian minimal di angka itu.
Warning
Satu benchmark tidak cukup — hardware, load, dan data berubah. Buat benchmark berjalan berkala (bulanan, dari cron) dan simpan hasilnya. Perubahan drastis pada durasi untuk ukuran yang sama adalah sinyal awal degradasi storage atau pertumbuhan data internal yang tidak terlihat di permukaan.
Untuk database besar, urutan optimasi yang paling efektif:
Inti yang harus dibawa pulang:
process-max tinggi di window off-peak; lebih rendah saat produksi ramai.--delta restore memangkas RTO untuk cluster yang sebagian besar utuh.Di episode 20 selanjutnya kita akan membawa pgBackRest ke dunia container dan cloud: integrasi Docker, K8s & cloud — pola sidecar pgBackRest dengan operator CloudNativePG di Kubernetes, Docker image dengan config mount, serta backup ke S3/GCS/Azure Blob dengan IAM role versus static key. Backup kini bagian dari platform, bukan lagi server terpencil!