Migrasikan data dari kluster Elasticsearch yang dikelola sendiri ke Alibaba Cloud Elasticsearch dengan membuat repositori snapshot OSS, mencadangkan indeks Anda, dan memulihkan snapshot tersebut ke kluster Alibaba Cloud Anda.
Batasan
-
Bucket OSS harus memenuhi persyaratan berikut:
-
Kelas penyimpanan harus Standard.
-
Bucket harus berada di wilayah yang sama dengan kluster Alibaba Cloud Elasticsearch.
-
-
Versi kluster: Anda dapat memigrasikan data dari versi minor yang lebih lama ke versi minor yang lebih baru dalam versi utama Elasticsearch yang sama (misalnya, dari 8.15.1 ke 8.17.1). Migrasi data antar versi utama (misalnya, dari 7.7.1 ke 8.17.1) tidak disarankan.
CatatanAlibaba Cloud Elasticsearch sepenuhnya kompatibel dengan Elasticsearch open-source. Namun, tipe data dapat berubah antar versi utama open-source. Misalnya, tipe
stringpada versi 5.x dipisah menjaditextdankeywordpada versi 6.x. Migrasi data antar versi utama dapat menyebabkan error pengenalan tipe field.
Prasyarat
-
Buat kluster Alibaba Cloud Elasticsearch dan bucket OSS. Kluster Alibaba Cloud Elasticsearch harus memiliki versi utama yang sama dengan kluster yang dikelola sendiri Anda.
-
Pastikan Pengguna RAM memiliki kebijakan izin
AliyunOSSFullAccess. Berikan izin kepada Pengguna RAM.
Latar Belakang
Contoh ini menggunakan indeks bernama products_info untuk menunjukkan proses migrasi.
Jalankan curl -X GET "http://localhost:9200/products_info/_search?pretty". Jika Anda menerima tanggapan berikut, data indeks sudah siap:
Ikhtisar solusi

Solusi ini paling cocok untuk dataset besar (lebih dari 500 GB) yang memerlukan efisiensi migrasi tinggi. Setelah backup penuh awal, hanya data inkremental yang disinkronkan, sehingga mengurangi waktu migrasi. Solusi ini cocok untuk migrasi ke cloud, peningkatan lintas versi, dan pemulihan bencana.
Migrasi data
Langkah 1: Instal plugin elasticsearch-repository-oss
-
Sambungkan ke Instance ECS yang menjalankan kluster Elasticsearch yang dikelola sendiri Anda dan unduh plugin elasticsearch-repository-oss. Contoh ini menggunakan versi 8.17.0.
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v8.17.0/elasticsearch-repository-oss-8.17.0.zipUntuk versi lainnya, lihat Versi lain plugin elasticsearch-repository-oss.
-
Instal plugin pada kluster Elasticsearch Anda.
# Instal plugin dengan mengekstraknya ke direktori plugins di setiap node instalasi Elasticsearch Anda. sudo unzip -d /usr/local/elasticsearch-8.17.0/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-8.17.0.zip -
Jalankan ulang node di kluster Elasticsearch yang dikelola sendiri Anda.
cd /usr/local/elasticsearch-8.17.0 ./bin/elasticsearch -d
Langkah 2: Buat repositori snapshot untuk kluster yang dikelola sendiri
Pada server yang menjalankan kluster Elasticsearch yang dikelola sendiri Anda, buat repositori snapshot:
Perintah ini berlaku untuk Elasticsearch 8.x. Untuk versi lainnya, lihat Backup dan pemulihan manual.
curl -X PUT "http://localhost:9200/_snapshot/<yourBackupName>" -H 'Content-Type: application/json' -d'
{
"type": "oss",
"settings": {
"oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
"oss.client.access_key_id": "xxxx",
"oss.client.secret_access_key": "xxxx",
"oss.client.bucket": "<yourBucketName>",
"oss.client.base_path":"snapshot/",
"oss.client.compress": true
}
}
'
|
Parameter |
Deskripsi |
|
<yourBackupName> |
Nama kustom untuk repositori. |
|
type |
Tipe repositori. Nilai ini harus diatur ke oss. |
|
oss.client.endpoint |
Titik akhir bucket OSS. Wilayah dan titik akhir. Catatan
Jika Instance ECS untuk kluster Elasticsearch yang dikelola sendiri Anda berada di wilayah yang sama dengan bucket OSS, gunakan titik akhir internal. Jika tidak, gunakan titik akhir publik. |
|
oss.client.access_key_id |
ID AccessKey akun yang digunakan untuk membuat bucket OSS. Dapatkan pasangan AccessKey. |
|
oss.client.secret_access_key |
Rahasia AccessKey akun yang digunakan untuk membuat bucket OSS. Dapatkan pasangan AccessKey. |
|
oss.client.bucket |
Nama bucket OSS. |
|
oss.client.base_path |
Jalur penyimpanan untuk snapshot. |
|
oss.client.compress |
Menentukan apakah kompresi diaktifkan:
|
Pembuatan yang berhasil mengembalikan tanggapan {"acknowledged": true}.
Langkah 3: Buat snapshot indeks
Pada kluster Elasticsearch yang dikelola sendiri Anda, buat snapshot bernama snapshot_1 untuk mencadangkan indeks products_info.
curl -X PUT localhost:9200/_snapshot/<yourBackupName>/snapshot_1?pretty -H "Content-Type: application/json" -d'
{
"indices": "products_info"
}'
<yourBackupName> adalah nama repositori yang Anda tentukan saat membuat repositori snapshot.
Pembuatan yang berhasil mengembalikan tanggapan {"accepted": true}.
Jalankan curl -X GET localhost:9200/_snapshot/<yourBackupName>/snapshot_1/_status untuk memeriksa progres. Saat state bernilai SUCCESS, snapshot telah selesai.
Langkah 4: Buat repositori di Alibaba Cloud Elasticsearch
Pada kluster Alibaba Cloud Elasticsearch Anda, login ke Konsol Kibana. Di panel navigasi kiri, klik ikon
dan pilih .
Pada Shell, buat repositori dengan pengaturan yang sama seperti repositori pada kluster yang dikelola sendiri Anda:
PUT _snapshot/<yourBackupName>/
{
"type": "oss",
"settings": {
"endpoint": "oss-cn-shanghai.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "<yourBucketName>",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/"
}
}
Nilai <yourBackupName>, <yourBucketName>, dan <base_path> harus sesuai dengan nilai yang digunakan untuk repositori snapshot pada kluster Elasticsearch yang dikelola sendiri Anda.
Langkah 5: Pulihkan snapshot di Alibaba Cloud Elasticsearch
Pada Konsol Kibana, pulihkan snapshot_1 ke kluster. Ini memulihkan semua indeks kecuali indeks monitoring dan audit keamanan, serta melewati indeks yang tidak ada.
POST _snapshot/<yourBackupName>/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}
Permintaan yang berhasil mengembalikan tanggapan {"accepted": true}.
Jalankan GET products_info/_recovery untuk memeriksa progres pemulihan. Saat "stage" bernilai "DONE", indeks telah dipulihkan.
Pada Elasticsearch 7.10.x dan 7.17.x, atur cluster.restore.ignore_revision.enable ke true untuk mengizinkan pemulihan snapshot dengan nomor revisi yang lebih tinggi. Nomor revisi adalah bagian ketiga dari versi (misalnya, 1 pada 7.10.1).
Contoh: Setelah mengatur cluster.restore.ignore_revision.enable ke true pada kluster 7.10.0, Anda dapat memulihkan snapshot dari 7.10.2:
PUT _cluster/settings
{
"persistent": {
"cluster.restore.ignore_revision.enable": true
}
}
Langkah 6: Verifikasi hasil
Pada Konsol Kibana, jalankan perintah berikut untuk memverifikasi pemulihan:
-
Lihat indeks yang dipulihkan:
GET /_cat/indices?v -
Lihat data dalam indeks yang dipulihkan:
GET /products_info/_searchHasil yang diharapkan:
{ "took": 3, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "products_info", "_id": "1", "_score": 1, "_source": { "productName": "Financial Product A", "annual_rate": "3.2200%", "describe": "180-day fixed-term investment, 20,000 minimum, stable returns, optional message notifications." } }, { "_index": "products_info", "_id": "2", "_score": 1, "_source": { "productName": "Financial Product B", "annual_rate": "3.1100%", "describe": "90-day investment product, 10,000 minimum, daily return notifications." } }, { "_index": "products_info", "_id": "3", "_score": 1, "_source": { "productName": "Financial Product C", "annual_rate": "3.3500%", "describe": "270-day investment product, 40,000 minimum, instant daily return notifications." } }, { "_index": "products_info", "_id": "4", "_score": 1, "_source": { "productName": "Financial Product D", "annual_rate": "3.1200%", "describe": "90-day investment product, 12,000 minimum, daily return notifications." } }, { "_index": "products_info", "_id": "5", "_score": 1, "_source": { "productName": "Financial Product E", "annual_rate": "3.0100%", "describe": "Recommended 30-day investment product, 8,000 minimum, daily return notifications." } }, { "_index": "products_info", "_id": "6", "_score": 1, "_source": { "productName": "Financial Product F", "annual_rate": "2.7500%", "describe": "Popular short-term product, 3-day term, no fees, 500 minimum, get return notifications via SMS." } } ] } }
FAQ
Versi lain plugin elasticsearch-repository-oss
Unduh plugin dari Github. Jika versi tepat Anda tidak tersedia, unduh versi minor serupa dalam versi utama yang sama, perbarui nilai dalam plugin-descriptor.properties, repaket, dan instal.
-
version=Versi plugin yang diperlukan
-
elasticsearch.version=Versi kluster Elasticsearch yang dikelola sendiri Anda
CatatanVersi plugin harus sesuai dengan versi kluster Elasticsearch yang dikelola sendiri Anda.
-
java.version=1.8
Catatan-
Versi Elasticsearch yang berbeda memerlukan versi JDK yang berbeda. Periksa persyaratan resmi Elasticsearch dan plugin.
-
Versi open-source Elasticsearch memiliki metode kompilasi yang berbeda. Anda harus mengompilasi plugin elasticsearch-repository-oss agar sesuai dengan versi Anda. Misalnya, kluster 7.6.2 yang dikelola sendiri memerlukan JDK 1.8 atau lebih baru. Plugin yang sesuai adalah elasticsearch-repository-oss-7.6.2.
-