Episode ini memindahkan repository keluar dari host database: repository remote di host lain via SSH (repo1-host), dan object storage S3-compatible dengan repo1-type=s3 beserta endpoint dan bucket. Kalian memahami kasus penggunaannya: off-site backup yang tahan bencana lokasi dan penyimpanan cloud yang murah.

Sejauh ini repository kita ada di host yang sama dengan database. Ini bekerja, tetapi menyisakan satu lubang besar: jika host itu mati — disk rusak, mesin disita, data center terbakar — backup ikut hilang bersama data yang seharusnya dilindungi. Di episode 12 kita memindahkan repository keluar: ke host remote via SSH, atau ke object storage S3-compatible untuk skala cloud.
Ini langkah krusial menuju disaster recovery sungguhan. Backup yang benar harus selalu berada di tempat yang tidak bisa hilang bersamaan dengan sumber datanya.
Pada arsitektur remote, database berjalan di host A, repository berada di host B. Semua operasi backup tetap dipicu dari host A, tetapi file ditulis ke host B melalui SSH. Keunggulannya: pemisahan fisik penuh, kalian mengontrol langsung media penyimpanan.
Pada host database, tambahkan opsi repository remote di /etc/pgbackrest.conf:
[global]
repo1-host = backup01.internal
repo1-host-user = postgres
repo1-path = /var/lib/pgbackrest
[main]
pg1-path = /var/lib/postgresql/16/mainrepo1-host — host tempat repository berada.repo1-host-user — user SSH di host tersebut (biasanya postgres atau user khusus pgbackrest, episode 13).repo1-path — direktori repository di host remote.Semua perintah pgBackRest berjalan dari host database dan terhubung otomatis ke host remote. Tidak perlu menjalankan sesuatu di host B — pgBackRest menggunakan SSH sesuai konfigurasi.
sudo -u postgres pgbackrest --stanza=main check
sudo -u postgres pgbackrest --stanza=main backup --type=fullcheck memvalidasi koneksi SSH ke repo1-host — error koneksi di tahap ini hampir selalu soal SSH key (bukan pgBackRest). Pastikan key authentication berjalan tanpa password (episode 13).
Note
Repository remote menambah satu titik kegagalan baru: koneksi SSH. Latensi dan bandwidth jaringan kini ikut menentukan durasi backup dan WAL archiving. Untuk RPO ketat, pastikan link antar host stabil dan cepat — atau pertimbangkan S3 yang lebih toleran terhadap latensi.
Dengan repo1-type = s3, pgBackRest berkomunikasi langsung dengan object storage yang kompatibel S3: AWS S3, MinIO, R2 Cloudflare, Backblaze B2, atau S3 gateway lainnya. Tidak ada host SSH yang perlu dirawat — media penyimpanan dikelola penyedia cloud.
[global]
repo1-type = s3
repo1-s3-bucket = db-backup-prod
repo1-s3-endpoint = s3.ap-southeast-1.amazonaws.com
repo1-s3-region = ap-southeast-1
repo1-s3-key = AKIAXXXXXXXX
repo1-s3-key-secret = aBcDeFgH...
repo1-s3-uri-style = virtual-hostOpsi yang umum disesuaikan:
repo1-s3-endpoint — endpoint regional; untuk MinIO lokal, ganti dengan host MinIO dan repo1-s3-uri-style = path.repo1-s3-key / repo1-s3-key-secret — kredensial statis.repo1-s3-region — region bucket.repo1-s3-role — alternatif kredensial: gunakan IAM role alih-alih static key (kita bahas di episode 20).Setelah config, alurnya sama persis:
sudo -u postgres pgbackrest --stanza=main stanza-create
sudo -u postgres pgbackrest --stanza=main check
sudo -u postgres pgbackrest --stanza=main backup --type=fullPerhatikan bahwa konsep stanza, check, dan backup tidak berubah — hanya tempat penyimpanannya yang berbeda. Inilah kekuatan desain pgBackRest: satu workflow, banyak media.
Tip
S3-compatible ideal untuk off-site dan arsip jangka panjang: harga penyimpanan rendah, tidak perlu merawat server backup, dan tahan bencana lokasi. Untuk RTO yang sangat cepat, kombinasikan: repo1 lokal untuk recovery cepat + repo2 S3 untuk arsip off-site.
pgBackRest mendukung repo1 dan repo2 secara bersamaan. Pola production yang umum: repo1 lokal (RTO cepat) + repo2 S3 (off-site/arsip).
[global]
repo1-path = /var/lib/pgbackrest
repo2-type = s3
repo2-s3-bucket = db-backup-arsip
repo2-s3-endpoint = s3.ap-southeast-1.amazonaws.com
repo2-s3-region = ap-southeast-1
repo2-s3-key = AKIAXXXXXXXX
repo2-s3-key-secret = aBcDeFgH...Saat backup, gunakan --repo1 --repo2 (default saat keduanya terkonfigurasi). Restore bisa mengambil dari repository mana pun:
sudo -u postgres pgbackrest --stanza=main --repo=2 restoreKombinasi ini menjawab dua kebutuhan sekaligus: kecepatan (lokal) dan keamanan lokasi (cloud).
Warning
Kredensial S3 di config file adalah secret — beri permission 600 dan pertimbangkan IAM role / environment variable alih-alih static key. Di episode 20 kita memakai IAM role untuk instance di cloud; untuk MinIO lokal, gunakan static key yang dirotasi berkala.
Inti yang harus dibawa pulang:
repo1-host + SSH memisahkan fisik data dan backup.repo1-type = s3) menyimpan backup di object storage yang dikelola penyedia.Di episode 13 selanjutnya kita akan mengamankan jalur transport: SSH & networking — membuat user khusus pgbackrest dengan key authentication, mengonfigurasi akses via pg1-host/repo1-host dan opsi SSH di config, serta aturan jaringan: jangan expose backup server, gunakan VPN atau tunnel untuk remote. Keamanan data dalam perjalanan adalah setengah dari keamanan keseluruhan!