All Products
Search
Document Center

Elasticsearch:Backup dan pemulihan manual

Last Updated:Sep 12, 2026

Cadangkan data indeks ke OSS dan pulihkan sesuai kebutuhan menggunakan snapshot manual Elasticsearch. Snapshot ini dapat digunakan untuk migrasi data, pemulihan pada titik waktu (point-in-time recovery), penyiapan lingkungan pengujian/pengembangan, atau pencadangan sebelum operasi penting.

Fitur backup dan pemulihan memerlukan plugin elasticsearch-repository-oss, yang telah dipasang sebelumnya pada semua instans Alibaba Cloud Elasticsearch dan tidak dapat diuninstall.

Snapshot hanya menyimpan data indeks, tidak mencakup indeks pemantauan (.monitoring, .security_audit), metadata, translog, konfigurasi, paket, plugin, maupun log. Jalankan semua perintah di Kibana Dev Tools. Masuk ke konsol Kibana.

Buat repositori snapshot

Repositori snapshot menyimpan snapshot dalam bucket OSS. Siapkan bucket OSS dengan Jenis Penyimpanan Standar di wilayah yang sama dengan instans Elasticsearch Anda (Buat bucket). Pengguna RAM memerlukan kebijakan AliyunOSSFullAccess (Berikan izin kepada Pengguna RAM).

Contoh: buat repositori bernama my_backup.

Kluster Alibaba Cloud

PUT _snapshot/my_backup/
{
    "type": "oss",
    "settings": {
        "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
        "access_key_id": "xxxx",
        "secret_access_key": "xxxxxx",
        "bucket": "xxxxxx",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "snapshot/"
    }
}

Kluster 8.x yang dikelola sendiri

Kluster yang dikelola sendiri memerlukan pemasangan manual plugin elasticsearch-repository-oss. Tambahkan awalan oss.client. pada semua nama parameter.

PUT /_snapshot/my_backup
{
    "type": "oss",
    "settings": {
        "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
        "oss.client.access_key_id": "xxx",
        "oss.client.secret_access_key": "xxx",
        "oss.client.bucket": "xxxxxx",
        "oss.client.base_path":"snapshot/",
        "oss.client.compress": true
    }
}

Parameter

Parameter

Deskripsi

endpoint

Titik akhir internal bucket OSS. Wilayah dan titik akhir.

access_key_id

ID AccessKey Pengguna RAM. Dapatkan pasangan AccessKey.

secret_access_key

Rahasia AccessKey Pengguna RAM. Dapatkan pasangan AccessKey.

bucket

Nama bucket OSS yang sudah ada.

compress

Mengompres metadata snapshot (pemetaan dan pengaturan indeks). Tidak memengaruhi file data. Nilai default: false.

chunk_size

Ukuran maksimum chunk untuk unggahan ke OSS. File yang melebihi batas ini akan dibagi menjadi beberapa chunk.

base_path

Jalur penyimpanan di dalam bucket. Secara default mengacu ke root. Gunakan subdirektori untuk mengisolasi snapshot berdasarkan kluster atau lingkungan, seperti snapshot/prod/ atau snapshot/dev/.

Verifikasi konektivitas repositori

POST _snapshot/my_backup/_verify

Tanggapan sukses akan menampilkan daftar semua node yang terhubung ke repositori. Jika gagal, periksa kembali titik akhir, nama bucket, dan izin Pengguna RAM.

Dapatkan informasi repositori

# Dapatkan informasi tentang semua repositori
GET _snapshot
# Dapatkan informasi tentang repositori tertentu
GET _snapshot/my_backup

Buat snapshot

Snapshot semua indeks

PUT _snapshot/my_backup/snapshot_1

Perintah ini membuat snapshot bernama snapshot_1 untuk semua indeks yang terbuka. Proses snapshot berjalan secara asinkron. Untuk menunggu hingga selesai, tambahkan parameter wait_for_completion=true:

PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true

Jika Anda tidak menggunakan parameter ini, jalankan GET _snapshot/my_backup/snapshot_1/_status untuk memeriksa status snapshot. Status state bernilai SUCCESS menandakan bahwa snapshot telah selesai.

Peringatan

Sebelum melepas (release) instans Elasticsearch, pastikan snapshot telah selesai. Jika tidak, kehilangan data dapat terjadi.

Satu repositori dapat menyimpan beberapa snapshot. Snapshot pertama merupakan cadangan penuh (full backup); snapshot berikutnya bersifat inkremental, hanya menyimpan data yang berubah.

Snapshot indeks tertentu

PUT _snapshot/my_backup/snapshot_2
{
  "indices": "index_1,index_2",
  "ignore_unavailable": true,
  "include_global_state": false
}

Parameter

Deskripsi

indices

Daftar indeks yang akan dibackup, dipisahkan koma. Mendukung wildcard, seperti logs-*.

ignore_unavailable

Jika true, melewati indeks yang tidak ada alih-alih gagal.

include_global_state

Jika false, mengecualikan status global kluster. Disarankan untuk backup data saja.

Informasi snapshot

# Lihat semua snapshot
GET _snapshot/my_backup/_all

# Lihat snapshot tertentu
GET _snapshot/my_backup/snapshot_1

# Lihat status detail snapshot, termasuk statistik untuk setiap indeks dan shard
GET _snapshot/my_backup/snapshot_1/_status

Hapus snapshot

DELETE _snapshot/my_backup/snapshot_1

Jika snapshot sedang berlangsung, perintah ini akan menghentikan proses dan menghapus data parsial yang telah dibuat.

Saat Anda menghapus snapshot menggunakan Kibana Dev Tools atau API DELETE _snapshot, file snapshot terkait di bucket OSS akan secara otomatis dibersihkan oleh plugin. Anda tidak perlu menghapusnya secara manual dari konsol OSS.

Penting

Selalu hapus snapshot menggunakan perintah DELETE _snapshot. Jangan menghapus file snapshot langsung dari konsol OSS atau alat lain. Hal ini akan merusak rantai cadangan inkremental dan dapat menyebabkan semua snapshot berikutnya tidak dapat dipulihkan.

Pulihkan dari snapshot

Sebelum memulihkan data:

  • Hindari memulihkan indeks sistem (diawali dengan .), karena dapat menyebabkan gangguan akses Kibana.

  • Tutup atau hapus indeks yang sudah ada dengan nama yang sama di kluster target sebelum memulihkan. Jika tidak, proses pemulihan akan gagal.

  • Untuk pemulihan lintas wilayah (cross-region), pertama-tama migrasikan data snapshot di OSS ke wilayah target, lalu pulihkan ke kluster target. Jika daftar drop-down instance kosong saat Anda membuat snapshot manual di konsol, layanan backup mungkin belum diaktifkan untuk akun Anda atau dikonfigurasi secara salah. Untuk migrasi data lintas wilayah, gunakan backup manual dengan replikasi lintas wilayah OSS:

    1. Di wilayah sumber, misalnya Hangzhou, buat bucket OSS dan konfigurasikan snapshot manual Elasticsearch untuk mencadangkan data ke bucket tersebut.

    2. Konfigurasikan aturan replikasi lintas wilayah OSS untuk menyinkronkan data ke bucket OSS di wilayah target, misalnya Shanghai. Untuk migrasi data OSS, lihat Implementasi migrasi.

    3. Buat instans Elasticsearch baru di wilayah target.

    4. Di instans Elasticsearch target, daftarkan repositori snapshot yang mengarah ke bucket OSS di wilayah target, lalu pulihkan snapshot tersebut.

Buat repositori di kluster target

Buat repositori di kluster target yang mengarah ke lokasi backup OSS. Gunakan parameter yang sama seperti pada Buat repositori snapshot.

PUT _snapshot/my_backup_restore/
{
    "type": "oss",
    "settings": {
        "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
        "access_key_id": "xxxx",
        "secret_access_key": "xxxxxx",
        "bucket": "xxxxxx",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "snapshot/"
    }
}

Pulihkan indeks tertentu

Pulihkan dan ubah nama indeks untuk menghindari konflik nama:

POST /_snapshot/my_backup_restore/snapshot_1/_restore
{
 "indices": "index_1",
 "rename_pattern": "index_(.+)",
 "rename_replacement": "restored_index_$1"
}

Parameter

Deskripsi

indices

Indeks yang akan dipulihkan dari snapshot. Semua indeks lainnya diabaikan.

rename_pattern

Pola regex yang cocok dengan nama indeks yang akan dipulihkan.

rename_replacement

Pola pengganti untuk nama indeks yang baru. Mendukung referensi grup tangkapan (capture group).

Pulihkan indeks non-sistem

POST _snapshot/my_backup_restore/snapshot_1/_restore
{"indices": "*,-.monitoring*,-.security*,-.kibana*,-.internal.alerts*,-.alerts*","ignore_unavailable": true}
Pola pengecualian ini mencakup indeks sistem umum. Versi lain mungkin menyertakan tambahan, seperti .ds-ilm-history-* dan .slo-*. Sesuaikan berdasarkan kluster Anda. Untuk versi 8.x, juga kecualikan indeks pendukung data stream dengan menambahkan -.ds*.

Pulihkan semua indeks

POST _snapshot/my_backup_restore/snapshot_1/_restore

API _restore berjalan secara asinkron. Untuk menunggu hingga selesai, tambahkan parameter wait_for_completion=true:

POST _snapshot/my_backup_restore/snapshot_1/_restore?wait_for_completion=true

Pulihkan ke Indexing Service

Saat memulihkan ke instans Indexing Service, gunakan parameter ignore_index_settings untuk melewati pengaturan yang tidak kompatibel:

POST /_snapshot/my_backup_restore/snapshot_1/_restore
{
  "indices": "index_1",
  "ignore_index_settings": [
    "index.apack.cube.following_index"
  ]
}

Status pemulihan snapshot

Monitor progres pemulihan menggunakan API _recovery.

# Periksa status pemulihan indeks tertentu
GET restored_index_1/_recovery

# Periksa status pemulihan semua indeks (mungkin termasuk shard yang tidak terkait)
GET /_recovery/

Bidang output utama:

Bidang

Deskripsi

type

Jenis pemulihan. Nilai snapshot menunjukkan pemulihan dari snapshot.

source

Repositori dan snapshot sumber.

percent

Prosentase progres pemulihan.

Batalkan pemulihan

Batalkan pemulihan dengan menghapus indeks target:

DELETE /restored_index_3
Penting

Tindakan ini akan menghentikan pemulihan dan menghapus semua data yang telah dipulihkan untuk indeks tersebut.

FAQ

Berapa lama waktu yang dibutuhkan untuk mencadangkan data dalam jumlah besar ke OSS, dan berapa biayanya?

  • Estimasi waktu: Sebagai referensi, mencadangkan sekitar 80 GB data membutuhkan waktu sekitar 30 menit. Waktu aktual bergantung pada volume data dan bandwidth instans Anda. Untuk mempercepat proses backup, Anda dapat menaikkan parameter chunk_size saat membuat repositori snapshot atau meningkatkan bandwidth instans Anda.

  • Estimasi biaya: Menyimpan data backup di OSS dikenai biaya penyimpanan OSS dan biaya traffic. Biaya aktual bergantung pada volume data dan jenis penyimpanan Anda.

Apa yang harus saya lakukan jika snapshot gagal atau indeks tidak dapat dihapus?

  • Atasi kegagalan snapshot:

    • Jika snapshot gagal dengan pesan QpsLimitExceeded, pembatasan kecepatan (throttling) QPS OSS telah dipicu. Me-restart node tidak menyelesaikan masalah ini. Jadwalkan ulang backup pada jam sepi, misalnya pukul 03.00–04.00, atau hubungi tim OSS untuk menaikkan batas tersebut.

    • Jika snapshot gagal karena tekanan memori node atau garbage collection (GC), restart node untuk melepaskan memori cache, lalu buat snapshot lagi.

  • Hapus indeks yang terlibat dalam snapshot: Indeks yang sedang dalam proses snapshot tidak dapat dihapus secara langsung. Sebelum menghapus indeks, jalankan perintah berikut untuk melihat status snapshot:

    GET _snapshot/_status

    Dalam tanggapan, periksa daftar indices pada setiap snapshot yang memiliki state bernilai STARTED. Indeks yang tercantum sedang dalam proses backup. Tunggu hingga snapshot selesai, atau batalkan snapshot terkait, sebelum menghapus indeks tersebut. Anda dapat menghapus indeks dengan aman jika tidak muncul dalam daftar indices pada snapshot mana pun yang memiliki state bernilai STARTED.

Referensi