Anda dapat memigrasikan data dari kluster Elasticsearch yang dikelola sendiri ke kluster Alibaba Cloud Elasticsearch menggunakan snapshot Object Storage Service (OSS). Proses ini melibatkan pembuatan snapshot data yang dikelola sendiri melalui Elasticsearch Snapshot API, menyimpan snapshot tersebut di bucket OSS, lalu memulihkan data ke kluster Alibaba Cloud Elasticsearch. Topik ini menjelaskan cara melakukan migrasi tersebut.
Informasi latar belakang
OSS memungkinkan Anda memigrasikan volume data besar dari kluster Elasticsearch yang dikelola sendiri ke kluster Alibaba Cloud Elasticsearch.
Prosedur
Persiapkan kluster Elasticsearch yang dikelola sendiri, serta buat bucket OSS dan kluster Alibaba Cloud Elasticsearch.
Langkah 2: Instal plug-in elasticsearch-repository-oss
Instal plug-in elasticsearch-repository-oss pada setiap node kluster Elasticsearch yang dikelola sendiri. Anda hanya dapat membuat repositori OSS untuk kluster Elasticsearch yang dikelola sendiri setelah plug-in terinstal.
Langkah 3: Buat repositori snapshot untuk kluster Elasticsearch yang dikelola sendiri
Panggil API snapshot untuk membuat repositori snapshot bagi kluster Elasticsearch yang dikelola sendiri.
Langkah 4: Buat snapshot untuk indeks tertentu
Buat snapshot untuk indeks yang ingin Anda migrasikan dan simpan snapshot tersebut di repositori snapshot yang telah dibuat.
Langkah 5: Buat repositori snapshot yang sama untuk kluster Alibaba Cloud Elasticsearch
Di konsol Kibana kluster Alibaba Cloud Elasticsearch, panggil API snapshot untuk membuat repositori snapshot bagi kluster tersebut. Nama repositori snapshot harus sama dengan nama repositori snapshot untuk kluster Elasticsearch yang dikelola sendiri.
Langkah 6: Pulihkan data ke kluster Alibaba Cloud Elasticsearch dari snapshot yang dibuat
Pulihkan data dari snapshot dalam repositori snapshot kluster Elasticsearch yang dikelola sendiri ke kluster Alibaba Cloud Elasticsearch.
Langkah 7: Lihat hasil pemulihan
Lihat indeks yang telah dipulihkan beserta datanya.
Langkah 1: Lakukan persiapan
Persiapkan kluster Elasticsearch yang dikelola sendiri.
Kami menyarankan agar Anda menerapkan kluster Elasticsearch pada instance Elastic Compute Service (ECS) Alibaba Cloud. Untuk informasi selengkapnya, lihat Menginstal dan Menjalankan Elasticsearch.
CatatanKami menyarankan agar Anda menggunakan instance ECS Alibaba Cloud dalam virtual private cloud (VPC) yang sama dengan kluster Alibaba Cloud Elasticsearch untuk menerapkan kluster Elasticsearch yang dikelola sendiri. Jika Anda menggunakan server yang dikelola sendiri untuk menerapkan kluster, masalah konektivitas jaringan mungkin terjadi.
Dalam contoh ini, digunakan kluster Elasticsearch V6.7.0 ber-node tunggal. Dalam produksi sesungguhnya, Anda dapat membeli beberapa instance ECS yang berada dalam VPC yang sama untuk menerapkan kluster Elasticsearch multi-node. Untuk informasi lebih lanjut tentang cara membeli instance ECS, lihat Buat instance di tab Peluncuran Kustom.
Aktifkan OSS, dan buat bucket di wilayah tempat instance ECS yang menjalankan kluster Elasticsearch yang dikelola sendiri berada.
Untuk informasi selengkapnya, lihat Aktifkan OSS dan Buat bucket.
PentingKelas penyimpanan bucket harus Jenis Penyimpanan Standar. Elasticsearch tidak mendukung kelas penyimpanan Archive.
Buat kluster Alibaba Cloud Elasticsearch di wilayah tempat bucket yang dibuat berada.
Untuk informasi selengkapnya, lihat Buat kluster Alibaba Cloud Elasticsearch.
Langkah 2: Instal plug-in elasticsearch-repository-oss
Sambungkan ke instance ECS yang menjalankan kluster Elasticsearch yang dikelola sendiri.
Untuk informasi selengkapnya, lihat Sambungkan ke instance Linux menggunakan sandi atau kunci.
CatatanDalam contoh ini, digunakan pengguna biasa.
Unduh paket instalasi plug-in elasticsearch-repository-oss.
Dalam contoh ini, versi plug-in adalah V6.7.0, yang memerlukan JDK 11.0 atau lebih baru.
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v6.7.0/elasticsearch-repository-oss-6.7.0.zipCatatanUntuk informasi selengkapnya tentang cara memperoleh paket instalasi plug-in elasticsearch-repository-oss versi lain, lihat FAQ.
Ekstrak paket instalasi ke folder plugins di jalur instalasi kluster Elasticsearch yang dikelola sendiri pada instance ECS.
sudo unzip -d /usr/local/elasticsearch-6.7.0/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-6.7.0.zipAnda juga dapat menggunakan perintah untuk menginstal plug-in.
sudo ./bin/elasticsearch-plugin install file:///usr/local/elasticsearch-repository-oss-6.7.0.zipJalankan setiap node dalam kluster Elasticsearch yang dikelola sendiri.
cd /usr/local/elasticsearch-6.7.0 ./bin/elasticsearch -d
Langkah 3: Buat repositori snapshot untuk kluster Elasticsearch yang dikelola sendiri
Sambungkan ke instance ECS yang menjalankan kluster Elasticsearch yang dikelola sendiri dan jalankan perintah berikut untuk membuat repositori snapshot:
sudo curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/<yourBackupName> -d' {"type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "<yourAccesskeyId>", "secret_access_key":"<yourAccesskeySecret>", "bucket": "<yourBucketName>", "compress": true }}'Parameter | Deskripsi |
<yourBackupName> | Nama repositori, yang dapat dikustomisasi. |
type | Jenis repositori. Atur parameter ini ke oss. |
endpoint | Titik akhir bucket OSS Anda. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir. Catatan Jika instance ECS yang menjalankan kluster Elasticsearch yang dikelola sendiri berada di wilayah yang sama dengan bucket OSS Anda, gunakan Titik akhir internal bucket OSS tersebut. Jika tidak, gunakan Titik akhir publik bucket OSS tersebut. |
access_key_id | ID AccessKey dari Akun Alibaba Cloud yang digunakan untuk membuat bucket OSS. Untuk informasi selengkapnya tentang cara memperoleh ID AccessKey, lihat Bagaimana cara memperoleh Pasangan Kunci Akses? |
secret_access_key | Rahasia AccessKey dari Akun Alibaba Cloud yang digunakan untuk membuat bucket OSS. Untuk informasi selengkapnya tentang cara memperoleh Rahasia AccessKey, lihat Bagaimana cara memperoleh Pasangan Kunci Akses? |
bucket | Nama bucket OSS. |
compress | Menentukan apakah kompresi diaktifkan. Nilai yang valid:
|
Tanggapan sukses mencakup "acknowledge":true.
Langkah 4: Buat snapshot untuk indeks tertentu
Buat snapshot untuk indeks yang datanya ingin Anda migrasikan. Secara default, semua indeks dalam status terbuka akan dicadangkan dalam snapshot. Jika Anda tidak ingin mencadangkan indeks sistem, seperti indeks yang namanya diawali dengan .kibana, .security, atau .monitoring, Anda dapat menentukan indeks yang ingin dicadangkan.
Kami menyarankan agar Anda tidak mencadangkan indeks sistem karena menghabiskan ruang penyimpanan yang besar.
curl -H "Content-Type: application/json" -XPUT localhost:9200/_snapshot/<yourBackupName>/snapshot_1?pretty -d'
{
"indices": "index1,index2"
}'<yourBackupName> adalah nama repositori yang Anda buat di Langkah 3: Buat repositori di kluster Elasticsearch yang dikelola sendiri. index1 dan index2 adalah nama indeks yang ingin Anda cadangkan. Tanggapan sukses mencakup "accepted" : true .
Saat snapshot sedang dibuat, Anda dapat menjalankan perintah GET /_snapshot/<yourBackupName>/<yourSnapshotName>/_status untuk melihat status snapshot. Snapshot selesai ketika parameter state dalam tanggapan bernilai SUCCESS.
Langkah 5: Buat repositori snapshot yang sama untuk kluster Alibaba Cloud Elasticsearch
Masuk ke konsol Kibana kluster Elasticsearch Anda dan buka halaman utama konsol Kibana sesuai petunjuk.
Untuk informasi selengkapnya tentang cara masuk ke konsol Kibana, lihat Masuk ke konsol Kibana.
CatatanDalam contoh ini, digunakan kluster Elasticsearch V6.7.0. Operasi pada kluster versi lain mungkin berbeda. Ikuti operasi aktual di konsol.
Di panel navigasi sebelah kiri halaman yang muncul, klik Dev Tools.
Di tab Console halaman yang muncul, jalankan perintah berikut untuk membuat repositori snapshot yang memiliki nama sama dengan repositori snapshot untuk kluster Elasticsearch yang dikelola sendiri.
PUT _snapshot/<yourBackupName> { "type": "oss", "settings": { "endpoint": "oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "<yourAccesskeyId>", "secret_access_key": "<yourAccesskeySecret>", "bucket": "<yourBucketName>", "compress": true } }Ganti <yourBackupName> dan <yourBucketName> dengan nama repositori dan nama bucket yang Anda tentukan di Langkah 3: Buat repositori snapshot untuk kluster Elasticsearch yang dikelola sendiri.
Langkah 6: Pulihkan data ke kluster Alibaba Cloud Elasticsearch dari snapshot yang dibuat
Pada versi Elasticsearch 7.10.x dan 7.17.x, Anda dapat mengatur cluster.restore.ignore_revision.enable ke true untuk mengizinkan pemulihan data dari snapshot dengan versi patch yang lebih tinggi. Versi patch adalah angka ketiga dalam nomor versi. Misalnya, pada versi 7.10.1, 7 adalah versi utama, 10 adalah versi minor, dan 1 adalah versi patch.
Misalnya, setelah Anda mengatur cluster.restore.ignore_revision.enable ke true untuk kluster Elasticsearch 7.10.0 yang sedang berjalan, Anda dapat memulihkan data dari snapshot yang dibuat dari versi 7.10.3. Kode berikut memberikan konfigurasinya.
PUT _cluster/settings
{
"persistent": {
"cluster.restore.ignore_revision.enable": true
}
}Ikuti petunjuk di Langkah 5: Buat repositori identik di kluster Alibaba Cloud Elasticsearch. Kemudian, jalankan perintah berikut di konsol Kibana untuk memulihkan semua indeks dari snapshot kecuali indeks sistem yang diawali dengan ..
POST _snapshot/es_backup/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}Tanggapan sukses mencakup "accepted" : true.
Perintah di atas memulihkan semua indeks dalam snapshot. Anda juga dapat menentukan indeks yang ingin dipulihkan. Di kluster Alibaba Cloud Elasticsearch, indeks yang sudah ada mungkin memiliki nama yang sama dengan indeks yang ingin Anda pulihkan. Dalam kasus ini, jika Anda tidak ingin menimpa data dalam indeks yang sudah ada, Anda dapat mengganti nama indeks yang ingin dipulihkan selama proses pemulihan.
POST _snapshot/es_backup/snapshot_1/_restore
{
"indices":"index1",
"rename_pattern": "index(.+)",
"rename_replacement": "restored_index_$1"
}Untuk informasi selengkapnya tentang perintah yang digunakan untuk membuat snapshot atau memulihkan data, lihat Buat snapshot manual dan pulihkan data dari snapshot manual.
Langkah 7: Lihat hasil pemulihan
Di konsol Kibana kluster Alibaba Cloud Elasticsearch, jalankan perintah berikut untuk melihat hasil pemulihan. Ikuti petunjuk di Langkah 5: Buat repositori snapshot yang sama untuk kluster Alibaba Cloud Elasticsearch untuk melakukan operasi ini.
Lihat indeks yang telah dipulihkan
GET /_cat/indices?v
Lihat data dalam indeks yang telah dipulihkan
GET /index1/_searchJika perintah berhasil dijalankan, hasil berikut akan dikembalikan:
{ "took" : 2, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [ { "_index" : "index1", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "productName" : "testpro", "annual_rate" : "3.22%", "describe" : "testpro" } } ] } }
FAQ
T: Bagaimana cara memperoleh paket instalasi plug-in elasticsearch-repository-oss versi lain?
J: Anda dapat mengunduh paket instalasi plug-in elasticsearch-repository-oss versi yang diperlukan dari GitHub. Jika GitHub tidak menyediakan paket instalasi versi yang diperlukan, kami menyarankan agar Anda mengunduh paket instalasi versi yang versi minornya paling dekat dengan versi minor yang diperlukan. Kemudian, ubah nilai parameter berikut dalam file plugin-descriptor.properties plug-in, buat ulang paketnya, lalu instal plug-in tersebut.
version=Versi plug-in yang diperlukan
elasticsearch.version=Versi kluster Elasticsearch yang dikelola sendiri
CatatanVersi plug-in harus sama dengan versi kluster Elasticsearch yang dikelola sendiri.
java.version=1.8
CatatanVersi kluster Elasticsearch yang berbeda bergantung pada versi JDK yang berbeda pula. Versi JDK aktual ditentukan oleh Elasticsearch sumber terbuka dan plug-in.
Elasticsearch sumber terbuka menyediakan berbagai versi kluster, dan versi kluster yang berbeda dikompilasi dengan cara yang berbeda pula. Oleh karena itu, sebelum menginstal plug-in elasticsearch-repository-oss untuk kluster Anda, Anda perlu mengompilasi dan men-debug plug-in tersebut berdasarkan versi kluster. Misalnya, Anda menerapkan kluster Elasticsearch V7.6.2 yang dikelola sendiri, dan versi JDK yang diperlukan adalah 1.8 atau lebih baru. Setelah dikompilasi dan di-debug, plug-in tersebut adalah elasticsearch-repository-oss-7.6.2.