Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat snapshot indeks di Amazon Service OpenSearch
Snapshot di Amazon OpenSearch Service adalah cadangan indeks dan status klaster. Status termasuk pengaturan klaster, informasi simpul, pengaturan indeks, dan alokasi serpihan.
OpenSearch Snapshot layanan datang dalam bentuk berikut:
-
Snapshot otomatis hanya untuk pemulihan klaster. Anda dapat menggunakannya untuk memulihkan domain Anda dalam peristiwa status klaster merah atau kehilangan data. Untuk informasi selengkapnya, lihat Memulihkan snapshot di bawah ini. OpenSearch Layanan menyimpan snapshot otomatis dalam bucket Amazon S3 yang telah dikonfigurasi sebelumnya tanpa biaya tambahan.
-
Snapshot manual adalah untuk pemulihan klaster atau untuk memindahkan data dari satu klaster ke klaster lainnya. Anda harus memulai snapshot manual. Snapshot ini disimpan dalam bucket Amazon S3 Anda sendiri dan biaya S3 standar berlaku. Jika Anda memiliki snapshot dari OpenSearch kluster yang dikelola sendiri, Anda dapat menggunakan snapshot tersebut untuk bermigrasi ke domain Layanan. OpenSearch Untuk informasi selengkapnya, lihat Migrasi ke OpenSearch Layanan Amazon.
Semua domain OpenSearch Layanan mengambil snapshot otomatis, tetapi frekuensinya berbeda dengan cara berikut:
-
Untuk domain yang berjalan OpenSearch atau Elasticsearch 5.3 dan yang lebih baru, OpenSearch Layanan mengambil snapshot otomatis setiap jam dan mempertahankan hingga 336 di antaranya selama 14 hari. Cuplikan per jam tidak terlalu mengganggu karena sifat inkrementalnya. Mereka juga menyediakan titik pemulihan yang lebih baru jika terjadi masalah domain.
-
Untuk domain yang menjalankan Elasticsearch 5.1 dan yang lebih lama, OpenSearch Layanan mengambil snapshot otomatis harian selama jam yang Anda tentukan, mempertahankan hingga 14 di antaranya, dan tidak menyimpan data snapshot apa pun selama lebih dari 30 hari.
Jika klaster Anda memasuki status merah, semua snapshot otomatis gagal selagi status klaster tetap ada. Jika Anda tidak memperbaiki masalah dalam waktu dua minggu, Anda dapat kehilangan data di klaster Anda secara permanen. Untuk langkah-langkah pemecahan masalah, lihat Status klaster merah.
Topik
Prasyarat
Untuk membuat snapshot secara manual, Anda perlu bekerja dengan IAM dan Amazon S3. Pastikan Anda memenuhi prasyarat berikut sebelum Anda mencoba untuk mengambil snapshot:
Prasyarat | Deskripsi |
---|---|
Bucket S3 | Buat bucket S3 untuk menyimpan snapshot manual untuk domain OpenSearch Layanan Anda. Untuk petunjuknya, lihat Membuat Bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. Ingat nama bucket untuk menggunakannya di tempat-tempat berikut:
pentingJangan menerapkan aturan siklus hidup S3 Glacier ke bucket ini. Snapshot manual tidak mendukung kelas penyimpanan S3 Glacier. |
Peran IAM | Buat peran IAM untuk mendelegasikan izin ke Layanan. OpenSearch Untuk petunjuk, lihat Membuat IAM role (konsol) di Panduan Pengguna IAM. Sisa dari bab ini mengacu pada peran ini sebagai Lampirkan kebijakan IAM Lampirkan kebijakan berikut ke
Untuk petunjuk guna melampirkan kebijakan ke peran, lihat Menambahkan Izin Identitas IAM di Panduan Pengguna IAM. Edit hubungan kepercayaan Edit hubungan kepercayaan
Untuk petunjuk guna mengedit hubungan kepercayaan, lihat Mengubah kebijakan kepercayaan peran di Panduan Pengguna IAM. |
Izin |
Untuk mendaftarkan repositori snapshot, Anda harus dapat meneruskan
Jika pengguna atau peran Anda tidak memiliki
|
Mendaftarkan repositori snapshot manual
Anda perlu mendaftarkan repositori snapshot dengan OpenSearch Service sebelum Anda dapat mengambil snapshot indeks manual. Operasi satu kali ini mengharuskan Anda menandatangani AWS permintaan dengan kredensil yang diizinkan untuk diaksesTheSnapshotRole
, seperti yang dijelaskan dalam. Prasyarat
Langkah 1: Petakan peran snapshot di OpenSearch Dasbor (jika menggunakan kontrol akses berbutir halus)
Kontrol akses detail memperkenalkan langkah tambahan saat mendaftarkan repositori. Bahkan jika Anda menggunakan autentikasi basic HTTP untuk semua tujuan lain, Anda perlu memetakan peran manage_snapshots
ke IAM role Anda yang memiliki izin iam:PassRole
untuk meneruskan TheSnapshotRole
.
-
Arahkan ke plugin OpenSearch Dasbor untuk domain OpenSearch Layanan Anda. Anda dapat menemukan titik akhir Dasbor di dasbor domain Anda di konsol OpenSearch Layanan.
-
Dari menu utama, pilih Keamanan, Peran, lalu pilih peran manage_snapshots.
-
Pilih Pengguna yang Dipetakan, Kelola pemetaan.
-
Tambahkan ARN dari peran yang memiliki izin untuk diteruskan.
TheSnapshotRole
Letakkan ARN peran di bawah peran Backend.arn:aws:iam::
123456789123
:role/role-name
-
Pilih Peta dan konfirmasikan pengguna atau peran muncul di bawah Pengguna yang dipetakan.
Langkah 2: Mendaftarkan repositori
Tab Snapshots berikut menunjukkan cara mendaftarkan direktori snapshot. Untuk opsi khusus untuk mengenkripsi snapshot manual dan mendaftarkan snapshot setelah bermigrasi ke domain baru, lihat tab yang relevan.
Menggunakan sampel klien Python
Klien Python lebih mudah untuk diotomatisasi daripada permintaan HTTP sederhana dan memiliki kemampuan penggunaan kembali yang lebih baik. Jika anda memilih untuk menggunakan metode ini untuk mendaftarkan repositori snapshot, simpan sampel kode Python berikut sebagai file Python, seperti register-repo.py
. Klien memerlukan paket AWS SDK for Python (Boto3)
Memperbarui variabel berikut dalam kode sampel: host
, region
, path
, dan payload
.
import boto3 import requests from requests_aws4auth import AWS4Auth host = '' # domain endpoint region = '' # e.g. us-west-1 service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) # Register repository path = '/_snapshot/
my-snapshot-repo-name
' # the OpenSearch API endpoint url = host + path payload = { "type": "s3", "settings": { "bucket": "s3-bucket-name
", "base_path": "my/snapshot/directory
", "region": "us-west-1
", "role_arn": "arn:aws:iam::123456789012
:role/snapshot-role
" } } headers = {"Content-Type": "application/json"} r = requests.put(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text) # # Take snapshot # # path = '/_snapshot/my-snapshot-repo-name/my-snapshot' # url = host + path # # r = requests.put(url, auth=awsauth) # # print(r.text) # # # Delete index # # path = 'my-index' # url = host + path # # r = requests.delete(url, auth=awsauth) # # print(r.text) # # # Restore snapshot (all indexes except Dashboards and fine-grained access control) # # path = '/_snapshot/my-snapshot-repo-name/my-snapshot/_restore' # url = host + path # # payload = { # "indices": "-.kibana*,-.opendistro_security,-.opendistro-*", # "include_global_state": False # } # # headers = {"Content-Type": "application/json"} # # r = requests.post(url, auth=awsauth, json=payload, headers=headers) # # print(r.text) # # # Restore snapshot (one index) # # path = '/_snapshot/my-snapshot-repo-name/my-snapshot/_restore' # url = host + path # # payload = {"indices": "my-index"} # # headers = {"Content-Type": "application/json"} # # r = requests.post(url, auth=awsauth, json=payload, headers=headers) # # print(r.text)
Mengambil snapshot manual
Snapshot tidak seketika. Mereka membutuhkan waktu untuk menyelesaikan dan tidak mewakili point-in-time pandangan cluster yang sempurna. Sementara snapshot sedang berlangsung, Anda masih dapat mengindeks dokumen dan membuat permintaan lain ke klaster, tetapi dokumen baru dan pembaruan untuk dokumen yang ada umumnya tidak termasuk dalam snapshot. Snapshot menyertakan pecahan primer seperti yang ada saat OpenSearch memulai snapshot. Tergantung pada ukuran kolam utas snapshot Anda, serpihan yang berbeda mungkin disertakan dalam snapshot pada waktu yang sedikit berbeda. Untuk praktik terbaik snapshot, lihatTingkatkan kinerja snapshot.
Penyimpanan dan performa snapshot
OpenSearch snapshot bersifat inkremental, artinya mereka hanya menyimpan data yang berubah sejak snapshot terakhir yang berhasil. Sifat pertambahan ini berarti perbedaan dalam penggunaan disk antara snapshot yang sering dan jarang sering kali minimal. Dengan kata lain, mengambil snapshot per jam selama seminggu (untuk total 168 snapshot) mungkin tidak menggunakan lebih banyak ruang disk daripada mengambil satu snapshot pada akhir minggu. Selain itu, semakin sering Anda mengambil snapshot, semakin sedikit waktu yang diperlukan untuk menyelesaikannya. Misalnya, snapshot harian dapat memakan waktu 20-30 menit untuk diselesaikan, sedangkan snapshot per jam mungkin selesai dalam beberapa menit. Beberapa OpenSearch pengguna mengambil foto sesering setiap setengah jam.
Ambil snapshot
Anda menentukan informasi berikut saat Anda membuat snapshot:
-
Nama dari repositori snapshot Anda
-
Sebuah nama untuk snapshot
Contoh dalam bab ini menggunakan curl
Jika kebijakan akses menentukan pengguna atau peran, Anda harus menandatangani permintaan snapshot. Untuk curl, Anda dapat menggunakan --aws-sigv4
opsi
Untuk mengambil snapshot manual, lakukan langkah-langkah berikut:
-
Anda tidak dapat mengambil snapshot jika salah satu sedang berlangsung. Untuk memeriksa, jalankan perintah berikut:
curl -XGET '
domain-endpoint
/_snapshot/_status' -
Jalankan perintah berikut untuk mengambil snapshot manual:
curl -XPUT '
domain-endpoint
/_snapshot/repository-name
/snapshot-name
'Untuk menyertakan atau mengecualikan indeks tertentu dan menentukan pengaturan lain, tambahkan isi permintaan. Untuk struktur permintaan, lihat Mengambil snapshot
dalam OpenSearch dokumentasi.
catatan
Waktu yang diperlukan untuk mengambil snapshot meningkat dengan ukuran domain OpenSearch Layanan. Operasi snapshot yang berjalan lama terkadang mengalami kesalahan berikut: 504 GATEWAY_TIMEOUT
. Anda biasanya dapat mengabaikan kesalahan ini dan menunggu operasi selesai dengan sukses. Jalankan perintah berikut untuk memverifikasi status dari semua snapshot domain Anda:
curl -XGET '
domain-endpoint
/_snapshot/repository-name
/_all?pretty'
Memulihkan snapshot
Sebelum mengembalikan snapshot, pastikan domain tujuan tidak menggunakan Multi-AZ dengan Standby. Mengaktifkan siaga menyebabkan operasi pemulihan gagal.
Awas
Jika Anda menggunakan alias indeks, Anda harus menghentikan permintaan tulis ke alias atau mengalihkan alias ke indeks lain sebelum menghapus indeksnya. Menghentikan permintaan penulisan membantu menghindari skenario berikut:
-
Anda menghapus indeks, yang juga menghapus aliasnya.
-
Permintaan penulisan yang salah ke alias yang sekarang dihapus membuat indeks baru dengan nama yang sama dengan alias.
-
Anda tidak dapat lagi menggunakan alias karena konflik penamaan dengan indeks baru. Jika Anda telah mengalihkan alias ke indeks lain, tentukan
"include_aliases": false
saat Anda memulihkan dari snapshot.
Untuk mengembalikan snapshot
-
Identifikasi snapshot yang ingin Anda pulihkan. Pastikan bahwa semua pengaturan untuk indeks ini, seperti paket penganalisis khusus atau pengaturan persyaratan alokasi, kompatibel dengan domain. Untuk melihat semua repositori snapshot, jalankan perintah berikut:
curl -XGET '
domain-endpoint
/_snapshot?pretty'Setelah Anda mengidentifikasi repositori, jalankan perintah berikut untuk melihat semua snapshot:
curl -XGET '
domain-endpoint
/_snapshot/repository-name
/_all?pretty'catatan
Sebagian besar snapshot otomatis disimpan dalam repositori
cs-automated
. Jika domain Anda mengenkripsi data saat tidak aktif, maka data tersebut akan disimpan di repositorics-automated-enc
. Jika Anda tidak melihat repositori snapshot manual yang Anda cari, pastikan Anda mendaftarkannya ke domain. -
(Opsional) Hapus atau ganti nama satu atau beberapa indeks di domain OpenSearch Layanan jika Anda memiliki konflik penamaan antara indeks di klaster dan indeks dalam snapshot. Anda tidak dapat mengembalikan snapshot indeks Anda ke OpenSearch cluster yang sudah berisi indeks dengan nama yang sama.
Anda memiliki opsi berikut jika Anda memiliki konflik penamaan indeks:
-
Hapus indeks pada domain OpenSearch Layanan yang ada dan kemudian pulihkan snapshot.
-
Ganti nama indeks saat Anda memulihkannya dari snapshot dan indeks ulang nanti. Untuk mempelajari cara mengganti nama indeks, lihat contoh permintaan ini
dalam dokumentasi. OpenSearch -
Kembalikan snapshot ke domain OpenSearch Layanan yang berbeda (hanya mungkin dengan snapshot manual).
Perintah berikut menghapus semua indeks yang ada di domain:
curl -XDELETE '
domain-endpoint
/_all'Namun, jika Anda tidak berencana untuk memulihkan semua indeks, Anda cukup menghapus satu:
curl -XDELETE '
domain-endpoint
/index-name
' -
-
Untuk memulihkan snapshot, jalankan perintah berikut:
curl -XPOST '
domain-endpoint
/_snapshot/repository-name
/snapshot-name
/_restore'Karena izin khusus pada OpenSearch Dasbor dan indeks kontrol akses berbutir halus, upaya untuk memulihkan semua indeks mungkin gagal, terutama jika Anda mencoba memulihkan dari snapshot otomatis. Contoh berikut memulihkan hanya satu indeks,
my-index
, dari2020-snapshot
di repositori snapshotcs-automated
:curl -XPOST '
domain-endpoint
/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "my-index"}' \ -H 'Content-Type: application/json'Sebagai alternatif, Anda mungkin ingin memulihkan semua indeks kecuali Dasbor dan indeks kontrol akses berbutir halus:
curl -XPOST '
domain-endpoint
/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "-.kibana*,-.opendistro*"}' \ -H 'Content-Type: application/json'Anda dapat memulihkan snapshot tanpa menghapus datanya dengan menggunakan parameter
rename_pattern
danrename_replacement
. Untuk informasi selengkapnya tentang parameter ini, lihat bidang permintaanRestore Snapshot API dan contoh permintaan dalam OpenSearch dokumentasi.
catatan
Jika tidak semua pecahan utama tersedia untuk indeks yang terlibat, snapshot mungkin memiliki file. state
PARTIAL
Nilai ini menunjukkan bahwa data dari setidaknya satu serpihan tidak berhasil disimpan. Anda masih dapat memulihkan dari sebagian snapshot, tetapi Anda mungkin perlu menggunakan snapshot lama untuk memulihkan indeks yang hilang.
Menghapus snapshot manual
Untuk menghapus snapshot manual, jalankan perintah berikut:
DELETE _snapshot/
repository-name
/snapshot-name
Mengotomatiskan snapshot dengan Manajemen Snapshot
Anda dapat menyiapkan kebijakan Manajemen Snapshot (SM) di OpenSearch Dasbor untuk mengotomatiskan pembuatan dan penghapusan snapshot secara berkala. SM dapat mengambil snapshot dari sekelompok indeks, sedangkan Index State Management hanya dapat mengambil satu snapshot per indeks. Untuk menggunakan SM in OpenSearch Service, Anda harus mendaftarkan repositori Amazon S3 Anda sendiri. Untuk petunjuk untuk mendaftarkan repositori Anda, lihat Mendaftarkan repositori snapshot manual.
Sebelum SM, OpenSearch Layanan menawarkan fitur snapshot otomatis gratis yang masih diaktifkan secara default. Fitur ini mengirimkan snapshot ke repositori yang dikelola layanancs-*
. Untuk menonaktifkan fitur, hubungi. AWS Support
Untuk informasi selengkapnya tentang fitur SM, lihat Manajemen snapshot
SM saat ini tidak mendukung pembuatan snapshot pada beberapa jenis indeks. Misalnya, jika Anda mencoba membuat snapshot pada beberapa indeks dengan *
dan beberapa indeks berada di tingkat hangat, pembuatan snapshot akan gagal. Jika Anda memerlukan snapshot berisi beberapa jenis indeks, gunakan tindakan snapshot ISM
Konfigurasi izin
Jika Anda memutakhirkan ke 2.5 dari versi domain OpenSearch Layanan sebelumnya, izin keamanan manajemen snapshot mungkin tidak ditentukan pada domain. Pengguna non-admin harus dipetakan ke peran ini untuk menggunakan manajemen snapshot pada domain menggunakan kontrol akses berbutir halus. Untuk membuat peran manajemen snapshot secara manual, lakukan langkah-langkah berikut:
-
Di OpenSearch Dasbor, buka Keamanan dan pilih Izin.
-
Pilih Buat grup tindakan dan konfigurasi grup-grup berikut:
Nama grup Izin snapshot_management_full_access
-
cluster:admin/opensearch/snapshot_management/*
-
cluster:admin/opensearch/notifications/feature/publish
-
cluster:admin/repository/*
-
cluster:admin/snapshot/*
snapshot_management_read_access
-
cluster:admin/opensearch/snapshot_management/policy/get
-
cluster:admin/opensearch/snapshot_management/policy/search
-
cluster:admin/opensearch/snapshot_management/policy/explain
-
cluster:admin/repository/get
-
cluster:admin/snapshot/get
-
-
Pilih Peran dan Buat peran.
-
Beri nama peran snapshot_management_role.
-
Untuk izin Cluster, pilih
snapshot_management_full_access
atausnapshot_management_read_access
. -
Pilih Buat.
-
Setelah Anda membuat peran, petakan ke setiap pengguna atau peran backend yang akan mengelola snapshot.
Pertimbangan
Pertimbangkan hal berikut saat Anda mengonfigurasi manajemen snapshot:
-
Satu kebijakan diperbolehkan per repositori.
-
Hingga 400 snapshot diizinkan untuk satu kebijakan.
-
Fitur ini tidak akan berjalan jika domain Anda memiliki status merah, berada di bawah tekanan JVM tinggi (85% atau lebih tinggi), atau memiliki fungsi snapshot macet. Ketika kinerja pengindeksan dan pencarian keseluruhan klaster Anda terpengaruh, SM juga dapat terpengaruh.
-
Operasi snapshot hanya dimulai setelah operasi sebelumnya selesai, sehingga tidak ada operasi snapshot bersamaan yang diaktifkan oleh satu kebijakan.
-
Beberapa kebijakan dengan jadwal yang sama dapat menyebabkan lonjakan sumber daya. Jika indeks snapshot kebijakan tumpang tindih, operasi snapshot level shard hanya dapat berjalan secara berurutan, yang dapat menyebabkan masalah kinerja berjenjang. Jika kebijakan berbagi repositori, akan ada lonjakan operasi penulisan ke repositori tersebut.
-
Kami menyarankan Anda menjadwalkan otomatisasi operasi snapshot Anda tidak lebih dari sekali per jam, kecuali jika Anda memiliki kasus penggunaan khusus.
Mengotomatisasi snapshot dengan Manajemen State Indeks
Anda dapat menggunakan snapshot
operasi Index State Management (ISM) untuk secara otomatis memicu snapshot indeks berdasarkan perubahan usia, ukuran, atau jumlah dokumen. ISM adalah yang terbaik ketika Anda membutuhkan satu snapshot per indeks. Jika Anda perlu memotret sekelompok indeks, lihat. Mengotomatiskan snapshot dengan Manajemen Snapshot
Untuk menggunakan SM in OpenSearch Service, Anda harus mendaftarkan repositori Amazon S3 Anda sendiri. Untuk contoh kebijakan ISM yang menggunakan operasi snapshot
, lihat Sampel Kebijakan.
Menggunakan Curator untuk snapshot
Jika ISM tidak berfungsi untuk manajemen indeks dan snapshot, Anda dapat menggunakan Kurator sebagai gantinya. Ini menawarkan fungsionalitas penyaringan lanjutan yang dapat membantu menyederhanakan tugas manajemen pada cluster yang kompleks. Gunakan pip
pip install elasticsearch-curator
Anda dapat menggunakan Curator sebagai antarmuka baris perintah (CLI) atau API Python. Jika Anda menggunakan Python API, Anda harus menggunakan versi 7.13.4 atau sebelumnya dari klien elasticsearch-py lama.
Jika Anda menggunakan CLI, ekspor kredensial Anda pada baris perintah dan konfigurasikan curator.yml
sebagai berikut:
client: hosts: search-
my-domain
.us-west-1
.es.amazonaws.com port: 443 use_ssl: True aws_region:us-west-1
aws_sign_request: True ssl_no_validate: False timeout: 60 logging: loglevel: INFO