Panduan Backup

Backup Snapshot ke S3 / R2 / B2

Snapshot adalah cara resmi dan aman untuk membackup cluster Elasticsearch/OpenSearch. Panduan ini menyimpannya ke storage S3-compatible — termasuk opsi hemat seperti Cloudflare R2 dan Backblaze B2 — lalu menjadwalkannya otomatis dengan SLM.

Konsep: Repository & Snapshot

  • Repository — lokasi penyimpanan backup (mis. bucket S3) yang didaftarkan ke cluster.
  • Snapshot — backup inkremental konsisten dari index/cluster ke repository tersebut.
  • Restore — memulihkan snapshot ke cluster yang sama atau berbeda.
  • SLM — penjadwalan dan retensi snapshot otomatis.
Snapshot bersifat inkremental: snapshot kedua hanya menyimpan segmen baru sejak snapshot pertama, sehingga hemat ruang dan cepat.

Langkah 1 — Plugin repository-s3

# pasang di SETIAP node, lalu restart node
sudo bin/elasticsearch-plugin install repository-s3
sudo systemctl restart elasticsearch
Di Elastic Cloud dan AWS OpenSearch Service, dukungan repository S3 sudah tersedia bawaan — Anda tidak perlu memasang plugin secara manual.

Langkah 2 — Kredensial di Keystore

# simpan terenkripsi di keystore tiap node
sudo bin/elasticsearch-keystore add s3.client.default.access_key
sudo bin/elasticsearch-keystore add s3.client.default.secret_key

# muat ulang tanpa restart penuh
POST /_nodes/reload_secure_settings
Jangan menaruh access key/secret key di elasticsearch.yml atau di body request. Selalu pakai keystore.

Langkah 3 — Daftarkan Repository

AWS S3

PUT /_snapshot/backup_s3
{
  "type": "s3",
  "settings": {
    "bucket": "nusabet88-backups",
    "region": "ap-southeast-1"
  }
}

Cloudflare R2

PUT /_snapshot/backup_r2
{
  "type": "s3",
  "settings": {
    "bucket": "nusabet88-backups",
    "endpoint": "<accountid>.r2.cloudflarestorage.com",
    "path_style_access": true,
    "region": "auto"
  }
}

Backblaze B2

PUT /_snapshot/backup_b2
{
  "type": "s3",
  "settings": {
    "bucket": "nusabet88-backups",
    "endpoint": "s3.us-west-002.backblazeb2.com",
    "path_style_access": true,
    "region": "us-west-002"
  }
}
PenyediaSetting kunciCatatan
AWS S3regionEndpoint dideteksi otomatis
Cloudflare R2endpoint + path_style_accessTanpa biaya egress, region=auto
Backblaze B2endpoint + region (cluster B2)Penyimpanan murah

Langkah 4 — Buat & Verifikasi Snapshot

# verifikasi repository bisa ditulis
POST /_snapshot/backup_r2/_verify

# buat snapshot (tunggu sampai selesai)
PUT /_snapshot/backup_r2/snap_2026_06_20?wait_for_completion=true
{
  "indices": "pages_*,logs_*",
  "include_global_state": false
}

# lihat status
GET /_snapshot/backup_r2/_all

Langkah 5 — Restore

# tutup atau hapus index target dulu bila perlu
POST /_snapshot/backup_r2/snap_2026_06_20/_restore
{
  "indices": "pages_*",
  "rename_pattern": "(.+)",
  "rename_replacement": "restored_$1"
}
Memakai rename_pattern memulihkan ke nama index baru sehingga tidak menimpa data produksi yang sedang berjalan.

Langkah 6 — Jadwal Otomatis (SLM)

PUT /_slm/policy/harian
{
  "schedule": "0 30 1 * * ?",          # tiap hari 01:30
  "name": "<nusa-{now/d}>",
  "repository": "backup_r2",
  "config": { "indices": "*", "include_global_state": true },
  "retention": { "expire_after": "30d", "min_count": 7, "max_count": 30 }
}

# jalankan sekali untuk uji
POST /_slm/policy/harian/_execute
Retensi expire_after + min_count/max_count menjaga jumlah snapshot tetap sehat tanpa pembersihan manual.

Kesimpulan

  • Selalu pakai Snapshot API, jangan menyalin direktori data secara manual.
  • Simpan kredensial S3 di keystore tiap node, bukan di file konfigurasi.
  • R2 dan B2 bekerja lewat repository-s3 dengan endpoint kustom + path_style_access.
  • Otomatiskan dengan SLM dan terapkan kebijakan retensi yang jelas.

FAQ Snapshot & Backup

Apa bedanya snapshot dengan menyalin direktori data?

Snapshot adalah backup inkremental yang konsisten di tingkat cluster: Elasticsearch mengetahui segmen Lucene yang sudah tersimpan dan hanya menyalin yang baru. Menyalin direktori data secara manual saat cluster berjalan berisiko korup karena file sedang ditulis. Selalu pakai Snapshot API.

Apakah Cloudflare R2 dan Backblaze B2 benar-benar kompatibel?

Keduanya menyediakan API yang kompatibel dengan S3, jadi plugin repository-s3 bisa dipakai dengan mengatur endpoint kustom dan path_style_access. R2 menarik karena tanpa biaya egress, sementara B2 punya tarif penyimpanan murah. Pastikan region dan endpoint diatur sesuai dokumentasi penyedia.

Di mana kredensial S3 sebaiknya disimpan?

Di Elasticsearch keystore (elasticsearch-keystore), bukan di elasticsearch.yml. Keystore menyimpan access key dan secret key terenkripsi dan harus diterapkan di setiap node. Jangan pernah menaruh secret key dalam plaintext di file konfigurasi atau body request.

Apa itu SLM dan kenapa penting?

SLM (Snapshot Lifecycle Management) menjadwalkan snapshot otomatis dan menerapkan kebijakan retensi (mis. simpan 7 harian, 4 mingguan). Tanpa SLM, Anda harus memicu snapshot manual dan rawan lupa. SLM memastikan backup berjalan rutin dan yang lama dibersihkan otomatis.

Operasi Aman Tanpa Downtime

Sebelum mengubah mapping, pelajari pola reindex dengan alias agar aplikasi tidak terganggu.

Reindex Tanpa Downtime