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: |
|
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 |
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.
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 |
|
ignore_unavailable |
Jika |
|
include_global_state |
Jika |
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.
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:
-
Di wilayah sumber, misalnya Hangzhou, buat bucket OSS dan konfigurasikan snapshot manual Elasticsearch untuk mencadangkan data ke bucket tersebut.
-
Konfigurasikan aturan replikasi lintas wilayah OSS untuk menyinkronkan data ke bucket OSS di wilayah target, misalnya Shanghai. Untuk migrasi data OSS, lihat Implementasi migrasi.
-
Buat instans Elasticsearch baru di wilayah target.
-
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 |
|
source |
Repositori dan snapshot sumber. |
|
percent |
Prosentase progres pemulihan. |
Batalkan pemulihan
Batalkan pemulihan dengan menghapus indeks target:
DELETE /restored_index_3
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_sizesaat 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/_statusDalam tanggapan, periksa daftar
indicespada setiap snapshot yang memilikistatebernilaiSTARTED. 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 daftarindicespada snapshot mana pun yang memilikistatebernilaiSTARTED.