Untuk membantu melindungi dari kehilangan data, Elasticsearch memiliki berbagai fitur yang memungkinkan Anda memastikan ketersediaan data, bahkan dalam kasus kegagalan data.
Beberapa cara yang digunakan Elasticsearch untuk menyediakan ketersediaan data bagi Anda meliputi:
- Replikasi lintas kluster, fitur yang memungkinkan Anda mereplikasi data ke kumpulan kluster pengikut; cluster pengikut adalah cluster siaga yang digunakan jika terjadi kegagalan dari cluster master failure.
- Metode lain yang digunakan Elasticsearch untuk mencegah data menggunakan backup-juga disebut snapshot cluster. Jika perlu, Anda dapat menggunakan snapshot ini untuk memulihkan data pada kluster yang benar-benar baru.
Tutorial ini menunjukkan cara membuat snapshot cluster, yang akan membantu Anda siap jika terjadi peristiwa kegagalan data yang tidak dapat diubah.
Mari kita mulai.
Apa itu Snapshot Elasticsearch??
Seperti disebutkan, snapshot elastis adalah salinan cadangan dari cluster Elasticsearch yang sedang berjalan. Snapshot ini dapat berupa seluruh cluster atau indeks tertentu dan aliran data dalam cluster tertentu.
Seperti yang akan segera Anda pelajari, plugin repositori mengelola snapshot Elasticsearch. Snapshot ini dapat disimpan di berbagai lokasi penyimpanan yang ditentukan oleh plugin. Ini termasuk sistem lokal dan sistem jarak jauh seperti Penyimpanan GCP, Amazon EC2, Microsoft Azure, dan banyak lagi.
Cara Membuat Repositori Snapshot Elasticsearch
Sebelum kita mendalami pembuatan snapshot Elasticsearch, kita perlu membuat repositori snapshot karena banyak layanan Elasticsearch menggunakan Snapshot API untuk melakukan tugas-tugas ini.
Beberapa tugas yang ditangani oleh Snapshot API adalah:
- Letakkan repositori snapshot
- Verifikasi repositori snapshot
- Dapatkan repositori snapshot
- Hapus repositori snapshot
- Bersihkan repositori snapshot
- Buat cuplikan
- Snapshot kloning
- Dapatkan cuplikan
- Dapatkan status cuplikan
- Pulihkan cuplikan
- Hapus cuplikan
Untuk membuat repositori snapshot, kita menggunakan endpoint _snapshot API diikuti dengan nama yang ingin kita tetapkan ke repositori snapshot. Pertimbangkan permintaan di bawah ini yang membuat repositori bernama backup_repo
PUT /_snapshot/backup_repo"ketik": "fs",
"pengaturan":
"lokasi": "/home/root/backup",
"kompres": benar
Berikut perintah cURL untuk permintaan di atas:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo" -H 'Content-Type: application/json' -d' "type": "fs", "settings": "location": "/ home/root/backups", "compress": true 'Untuk melewati jalur repositori snapshot, Anda harus terlebih dahulu menambahkan jalur sistem atau direktori induk ke jalur tersebut.entri repo di elasticsearch.yml
Jalan.entri repo akan terlihat mirip dengan:
jalan.repo: ["/home/root/backup"]Anda dapat menemukan file konfigurasi Elasticsearch yang terletak di /etc/elasticsearch/elasticsearch.yml
CATATAN: Setelah menambahkan jalur.repo, Anda mungkin perlu memulai kembali klaster Elasticsearch. Selain itu, nilai yang didukung untuk path.repo dapat sangat bervariasi tergantung pada platform yang menjalankan Elasticsearch.
Cara Melihat Repositori Snapshot
Untuk mengonfirmasi keberhasilan pembuatan repositori snapshot, gunakan permintaan GET dengan titik akhir _snapshot sebagai:
DAPATKAN /_snapshot/backup_repoAnda juga dapat menggunakan perintah cURL berikut:
curl -XGET "http://localhost:9200/_snapshot/backup_repo"Ini akan menampilkan informasi tentang repositori cadangan, misalnya:
"backup_repo" :
"tipe" : "fs",
"pengaturan" :
"kompres" : "benar",
"lokasi" : """/home/root/backup"""
Jika Anda memiliki lebih dari satu repositori snapshot dan tidak ingat namanya, Anda dapat menghilangkan nama repo dan memanggil _snapshot endpoint untuk mendaftar semua repositori yang ada.
DAPATKAN /_snapshot atau cURL curl -XGET http://localhost:9200/_snapshot
Cara Membuat Snapshot Elasticsearch
Membuat snapshot Elasticsearch untuk repositori snapshot tertentu ditangani oleh create snapshot API. API memerlukan nama repositori snapshot dan nama snapshot.
CATATAN: Repositori snapshot tunggal dapat memiliki lebih dari satu snapshot dari cluster yang sama selama mereka memiliki identitas/nama unik.
Pertimbangkan permintaan berikut untuk menambahkan snapshot yang disebut snapshot_2021 ke repositori backup_repo.
PUT /_snapshot/backup_repo/snapshot_2021Untuk menggunakan cURL, gunakan perintah:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo/snapshot_2021"Perintah harus mengembalikan respons dari Elasticsearch dengan 200 OK dan diterima: true
"diterima" : benar
Karena tidak menentukan aliran data dan indeks mana yang ingin Anda cadangkan, memanggil permintaan di atas akan mencadangkan semua data dan status cluster. Untuk menentukan aliran data dan indeks mana yang akan dicadangkan, tambahkan itu ke badan permintaan.
Pertimbangkan permintaan berikut yang mencadangkan .indeks kibana (indeks sistem) dan menentukan pengguna mana yang mengizinkan snapshot dan alasannya.
PUT /_snapshot/backup_repo/snapshot_2"indeks": ".kibana",
"ignore_unavailable": benar,
"include_global_state": benar,
"metadata":
"taken_by": "elastisadmin",
“taken_because”: “Cadangan Harian”
Perintah cURL untuk itu adalah:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo/snapshot_2" -H 'Content-Type: application/json' -d' "indices": ".kibana", "ignore_unavailable": true, "include_global_state": true, "metadata": "taken_by": "elasticadmin", "taken_because": "Daily Backup" 'mengabaikan_unavailable menyetel status Boolean yang mengembalikan kesalahan jika ada aliran data atau indeks yang ditentukan dalam snapshot hilang atau ditutup.
Parameter include_global_state menyimpan status cluster saat ini jika benar. Beberapa informasi cluster yang disimpan meliputi:
- Pengaturan cluster yang persisten
- Template indeks
- Template indeks lama
- Serap pipa
- Kebijakan siklus hidup ILM
CATATAN: Anda dapat menentukan lebih dari satu indeks yang dipisahkan dengan koma.
Argumen umum yang digunakan dengan titik akhir _snapshot adalah wait_for_completion, nilai Boolean yang menentukan apakah (benar) atau tidak (salah) permintaan harus segera dikembalikan setelah inisialisasi snapshot (default) atau menunggu penyelesaian snapshot.
Sebagai contoh:
PUT /_snapshot/backup_repo/snapshot_3?wait_for_completion=benar"indeks": ".kibana",
"ignore_unavailable": benar,
"include_global_state": salah,
"metadata":
"taken_by": "elastisadmin",
“taken_because”: “Cadangan Mingguan”
Perintah cURL adalah:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo/snapshot_3?wait_for_completion=true" -H 'Content-Type: application/json' -d' "indices": ".kibana", "ignore_unavailable": true, "include_global_state": false, "metadata": "taken_by": "elasticadmin", "taken_because": "Backup Mingguan" 'Ketika parameter wait_for_completion disetel ke true, Anda akan memberikan output yang mirip dengan yang ditunjukkan di bawah ini:
"jepretan" :
"snapshot" : "snapshot_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"version_id" : 7100299,
"versi" : "7.10.2",
"indeks" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : salah,
"metadata" :
"taken_by" : "elasticadmin",
“taken_because”: “Cadangan Mingguan”
,
"status" : "SUKSES",
"start_time" : "2020-01-19T13:36:59.615Z",
"start_time_in_millis" : 1611063419615,
"end_time" : "2020-01-19T13:37:00.433Z",
"end_time_in_millis" : 1611063420433,
"duration_in_millis" : 818,
"kegagalan" : [ ],
"pecahan" :
"jumlah" : 1,
"gagal" : 0,
"berhasil" : 1
Cara Melihat Cuplikan
GET snapshot API menangani fungsionalitas tampilan snapshot.
Yang perlu Anda sampaikan dalam permintaan adalah repositori snapshot dan nama snapshot yang ingin Anda lihat detailnya.
Snapshot harus merespons dengan detail tentang snapshot yang ditentukan. Rincian ini meliputi:
- Nilai waktu mulai dan berakhir
- Versi Elasticsearch yang membuat snapshot
- Daftar indeks yang disertakan
- Status snapshot saat ini
- Daftar kegagalan yang terjadi selama snapshot
Misalnya, untuk melihat detail tentang snapshot_3 yang dibuat di atas, gunakan permintaan yang ditunjukkan di bawah ini:
DAPATKAN /_snapshot/backup_repo/snapshot_3Untuk menggunakan cURL, gunakan perintah di bawah ini:
[cc lang="text" width="100%" height="100%" escape="true" theme="blackboard" nowrap="0"]
curl -XGET "http://localhost:9200/_snapshot/backup_repo/snapshot_3"
Permintaan harus mengembalikan respons dengan detail snapshot sebagai:
"foto" : [
"snapshot" : "snapshot_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"version_id" : 7100299,
"versi" : "7.10.2",
"indeks" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : salah,
"metadata" :
"taken_by" : "elasticadmin",
“taken_because”: “Cadangan Mingguan”
,
"status" : "SUKSES",
"start_time" : "2020-01-19T13:36:59.615Z",
"start_time_in_millis" : 1611063419615,
"end_time" : "2020-01-19T13:37:00.433Z",
"end_time_in_millis" : 1611063420433,
"duration_in_millis" : 818,
"kegagalan" : [ ],
"pecahan" :
"jumlah" : 1,
"gagal" : 0,
"berhasil" : 1
]
Anda juga dapat menyesuaikan badan permintaan untuk mendapatkan detail spesifik tentang snapshot. Namun, kami tidak akan membahasnya untuk saat ini.
Katakanlah Anda ingin melihat informasi tentang semua snapshot dalam repositori snapshot tertentu; dalam hal ini, Anda dapat memberikan wildcard asterisk dalam permintaan sebagai:
DAPATKAN /_snapshot/backup_repo/*Perintah cURL untuk itu adalah:
curl -XGET "http://localhost:9200/_snapshot/backup_repo/*"Responsnya adalah dump terperinci dari semua snapshot di repositori itu sebagai:
"foto" : [
"snapshot" : "snapshot_2021",
"uuid" : "7CFigHzvRtyZW07c60d2iw",
"version_id" : 7100299,
"versi" : "7.10.2",
"indeks" : [
"indeks_saya",
"single_index_with_body",
"indeks_saya_2",
"indeks_tunggal",
".kibana_1",
"uji"
],
"data_streams" : [ ],
"include_global_state" : benar,
"status" : "SUKSES",
"start_time" : "2020-01-19T13:28:48.172Z",
"start_time_in_millis" : 1611062928172,
"end_time" : "2020-01-19T13:28:50.831Z",
"end_time_in_millis" : 1611062930831,
"duration_in_millis" : 2659,
"kegagalan" : [ ],
"pecahan" :
"jumlah" : 7,
"gagal" : 0,
"berhasil" : 7
,
"snapshot" : "snapshot_2",
"uuid" : "w58IrYmORAub8VC7cg04Wg",
"version_id" : 7100299,
"versi" : "7.10.2",
"indeks" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : salah,
"metadata" :
"taken_by" : "elasticadmin",
"taken_because" : "Cadangan Harian"
,
"status" : "SUKSES",
"start_time" : "2020-01-19T13:33:34.482Z",
"start_time_in_millis" : 1611063214482,
"end_time" : "2020-01-19T13:33:35.921Z",
"end_time_in_millis" : 1611063215921,
"duration_in_millis" : 1439,
"kegagalan" : [ ],
"pecahan" :
"jumlah" : 1,
"gagal" : 0,
"berhasil" : 1
,
"snapshot" : "snapshot_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"version_id" : 7100299,
"versi" : "7.10.2",
"indeks" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : salah,
"metadata" :
"taken_by" : "elasticadmin",
“taken_because”: “Cadangan Mingguan”
,
"status" : "SUKSES",
"start_time" : "2020-01-19T13:36:59.615Z",
"start_time_in_millis" : 1611063419615,
"end_time" : "2020-01-19T13:37:00.433Z",
"end_time_in_millis" : 1611063420433,
"duration_in_millis" : 818,
"kegagalan" : [ ],
"pecahan" :
"jumlah" : 1,
"gagal" : 0,
"berhasil" : 1
]
Wildcard sangat berguna untuk memfilter informasi spesifik tentang snapshot.
Cara Menghapus Snapshot
Menghapus snapshot sangat sederhana: yang harus Anda lakukan adalah menggunakan permintaan DELETE sebagai:
HAPUS /_snapshot/backup_repo/snapshot_2021/Perintah cURL adalah:
curl -XDELETE "http://localhost:9200/_snapshot/backup_repo/snapshot_2021/"Tanggapannya harus diakui: benar
"diakui": benar
Jika snapshot tidak ada, Anda akan mendapatkan kode status 404 dan kesalahan snapshot yang hilang sebagai:
"kesalahan" :
"akar masalah" : [
"type" : "snapshot_missing_exception",
"reason" : "[backup_repo:snapshot_2021] tidak ada"
],
"type" : "snapshot_missing_exception",
"reason" : "[backup_repo:snapshot_2021] tidak ada"
,
"status" : 404
Kesimpulan
Dalam panduan ini, kita telah membahas cara membuat snapshot Elasticsearch menggunakan Snapshot API. Apa yang telah Anda pelajari seharusnya cukup untuk memungkinkan Anda membuat repositori snapshot, melihat repositori snapshot, membuat, melihat, dan menghapus snapshot. Meskipun ada penyesuaian yang dapat Anda lakukan dengan API, pengetahuan dalam panduan ini seharusnya cukup untuk membantu Anda memulai.
Terima kasih telah membaca.