Pencarian elastis

Cadangkan dan Pulihkan Cluster Elasticsearch dengan Snapshots

Cadangkan dan Pulihkan Cluster Elasticsearch dengan Snapshots
Elasticsearch adalah semua tentang data, dan seperti yang mungkin sudah Anda ketahui, data penting-bagi Anda dan Elasticsearch. Namun, sebanyak Anda dan Elasticsearch menyukai data, kegagalan data dapat terjadi, yang menyebabkan hilangnya data.

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:

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:

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_repo

Anda 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_2021

Untuk 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:

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:

Misalnya, untuk melihat detail tentang snapshot_3 yang dibuat di atas, gunakan permintaan yang ditunjukkan di bawah ini:

DAPATKAN /_snapshot/backup_repo/snapshot_3
Untuk 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.

Distro Linux Terbaik untuk Gaming pada tahun 2021
Sistem operasi Linux telah berkembang jauh dari tampilan aslinya, sederhana, berbasis server. OS ini telah sangat meningkat dalam beberapa tahun terak...
Cara merekam dan streaming sesi permainan Anda di Linux
Dulu, bermain game hanya dianggap sebagai hobi, namun seiring berjalannya waktu, industri game mengalami pertumbuhan yang sangat pesat baik dari segi ...
Game Terbaik untuk Dimainkan dengan Pelacakan Tangan
Oculus Quest baru-baru ini memperkenalkan ide hebat pelacakan tangan tanpa pengontrol. Dengan jumlah permainan dan aktivitas yang terus meningkat yang...