Bir OSS anlık görüntü deposu oluşturarak, dizinlerinizi yedekleyerek ve anlık görüntüleri hedef kümeye geri yükleyerek verileri kendi yönettiğiniz bir Elasticsearch kümesinden Alibaba Cloud Elasticsearch'e geçirin.
Sınırlamalar
-
OSS paketi aşağıdaki gereksinimleri karşılamalıdır:
Depolama sınıfı Standard olmalıdır.
Paket, Alibaba Cloud Elasticsearch kümesiyle aynı bölgede bulunmalıdır.
-
Küme sürümü: Aynı ana Elasticsearch sürümü içinde daha eski bir alt sürümden daha yeni bir alt sürüme veri geçişi yapabilirsiniz (örneğin, 8.15.1'den 8.17.1'e). Ana sürümler arasında veri geçişi yapılması (örneğin, 7.7.1'den 8.17.1'e) önerilmez.
NotAlibaba Cloud Elasticsearch, açık kaynaklı Elasticsearch ile tamamen uyumludur. Ancak, veri türleri ana açık kaynak sürümleri arasında değişebilir. Örneğin, 5.x sürümündeki
stringtürü, 6.x sürümündetextvekeywordolarak ayrılmıştır. Ana sürümler arasında veri geçişi yapmak alan türü tanıma hatalarına neden olabilir.
Önkoşullar
Bir Alibaba Cloud Elasticsearch kümesi ve bir OSS paketi oluşturun. Alibaba Cloud Elasticsearch kümesi, kendi yönettiğiniz kümeyle aynı ana sürüme sahip olmalıdır.
RAM kullanıcısının
AliyunOSSFullAccessizin ilkesine sahip olduğundan emin olun. RAM kullanıcısına izin verin.
Arka plan
Bu örnekte, geçiş işlemini göstermek için products_info adlı bir dizin kullanılmaktadır.
curl -X GET "http://localhost:9200/products_info/_search?pretty" komutunu çalıştırın. Aşağıdaki yanıtı alırsanız, dizin verileri hazırdır:
Çözüm özeti

Büyük veri kümeleri (500 GB üzeri) için en uygun çözümdür. İlk tam yedeklemenin ardından yalnızca artımlı değişiklikler senkronize edilir, bu da toplam geçiş süresini azaltır. Buluta geçiş, sürümler arası yükseltmeler ve olağanüstü durum kurtarma senaryoları için uygundur.
Veri geçişi
Adım 1: elasticsearch-repository-oss eklentisini yükleyin
-
Kendi yönettiğiniz Elasticsearch kümesini barındıran ECS örneğine bağlanın ve elasticsearch-repository-oss eklentisini indirin. Bu örnekte 8.17.0 sürümü kullanılmaktadır.
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v8.17.0/elasticsearch-repository-oss-8.17.0.zipDiğer sürümler için bkz. elasticsearch-repository-oss eklentisinin diğer sürümleri.
-
Eklentiyi Elasticsearch kümenize yükleyin.
# Install the plug-in by unzipping it to the plugins directory of each node in your Elasticsearch installation. sudo unzip -d /usr/local/elasticsearch-8.17.0/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-8.17.0.zip -
Kendi yönettiğiniz Elasticsearch kümesindeki düğümleri başlatın.
cd /usr/local/elasticsearch-8.17.0 ./bin/elasticsearch -d
Adım 2: Kendi yönettiğiniz küme için bir anlık görüntü deposu oluşturun
Kendi yönettiğiniz Elasticsearch kümesini barındıran sunucuda, bir anlık görüntü deposu oluşturmak için aşağıdaki komutu çalıştırın:
Bu komut Elasticsearch 8.x için geçerlidir. Diğer sürümler için bkz. Manuel yedekleme ve geri yükleme.
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
}
}
'
|
Parametre |
Açıklama |
|
<yourBackupName> |
Depo için özel bir ad. |
|
type |
Depo türü. oss olarak ayarlayın. |
|
oss.client.endpoint |
OSS paket uç noktası. Bölgeler ve uç noktalar. Not
Kendi yönettiğiniz Elasticsearch kümeniz için kullanılan ECS örneği, OSS paketiyle aynı bölgedeyse iç uç noktayı kullanın. Aksi takdirde genel uç noktayı kullanın. |
|
oss.client.access_key_id |
OSS paketini oluşturmak için kullanılan hesabın AccessKey ID'si. AccessKey çifti edinin. |
|
oss.client.secret_access_key |
OSS paketini oluşturmak için kullanılan hesabın AccessKey gizli anahtarı. AccessKey çifti edinin. |
|
oss.client.bucket |
OSS paketinin adı. |
|
oss.client.base_path |
Anlık görüntüler için depolama yolu. |
|
oss.client.compress |
Sıkıştırmayı etkinleştirip etkinleştirmeyeceğinizi belirtir:
|
Başarılı bir oluşturma işlemi {"acknowledged": true} yanıtını döndürür.
Adım 3: Bir dizin anlık görüntüsü oluşturun
Kendi yönettiğiniz Elasticsearch kümesinde, products_info dizinini yedeklemek için snapshot_1 adlı bir anlık görüntü oluşturun.
curl -X PUT localhost:9200/_snapshot/<yourBackupName>/snapshot_1?pretty -H "Content-Type: application/json" -d'
{
"indices": "products_info"
}'
<yourBackupName> yerine, anlık görüntü deposunu oluştururken belirttiğiniz depo adını girin.
Başarılı bir oluşturma işlemi {"accepted": true} yanıtını döndürür.
İlerlemeyi kontrol etmek için curl -X GET localhost:9200/_snapshot/<yourBackupName>/snapshot_1/_status komutunu çalıştırın. state değeri SUCCESS olduğunda, anlık görüntü tamamlanmış demektir.
Adım 4: Alibaba Cloud Elasticsearch'te bir depo oluşturun
Alibaba Cloud Elasticsearch kümenizde, Kibana konsoluna giriş yapın. Sol gezinme bölmesinde
simgesine tıklayın ve seçeneğini belirleyin.
Shell alanında, kendi yönettiğiniz küme için oluşturduğunuz depoyla aynı ayarlara sahip bir depo oluşturun:
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/"
}
}
<yourBackupName>, <yourBucketName> ve <base_path> değerleri, kendi yönettiğiniz Elasticsearch kümesindeki anlık görüntü deposu için kullanılan değerlerle eşleşmelidir.
Adım 5: Anlık görüntüyü Alibaba Cloud Elasticsearch'te geri yükleyin
Kibana konsolunda, snapshot_1 anlık görüntüsünü kümeye geri yükleyin. Bu işlem, izleme ve güvenlik denetim dizinleri hariç tüm dizinleri geri yükler ve kullanılamayan dizinleri atlar.
POST _snapshot/<yourBackupName>/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}
Başarılı bir istek {"accepted": true} yanıtını döndürür.
Geri yükleme ilerlemesini kontrol etmek için GET products_info/_recovery komutunu çalıştırın. stage değeri DONE olduğunda, dizin geri yüklenmiş demektir.
Elasticsearch 7.10.x ve 7.17.x sürümlerinde, daha yüksek bir revizyon numarasına sahip anlık görüntülerin geri yüklenmesine izin vermek için cluster.restore.ignore_revision.enable parametresini true olarak ayarlayın. Revizyon numarası, sürümün üçüncü bölümüdür (örneğin, 7.10.1 sürümündeki 1).
Örnek: 7.10.0 kümesinde cluster.restore.ignore_revision.enable parametresini true olarak ayarladıktan sonra, 7.10.2 sürümünden anlık görüntüleri geri yükleyebilirsiniz:
PUT _cluster/settings
{
"persistent": {
"cluster.restore.ignore_revision.enable": true
}
}
Adım 6: Sonuçları doğrulayın
Kibana konsolunda, verilerin geri yüklendiğini doğrulamak için aşağıdaki komutları çalıştırın:
-
Geri yüklenen dizinleri görüntüleyin:
GET /_cat/indices?v -
Geri yüklenen dizindeki verileri görüntüleyin:
GET /products_info/_searchBeklenen sonuç:
{ "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." } } ] } }
SSS
elasticsearch-repository-oss eklentisinin diğer sürümleri
Eklentiyi GitHub adresinden indirin. Tam sürümünüz mevcut değilse, aynı ana sürüm içinde benzer bir alt sürüm indirin, plugin-descriptor.properties dosyasındaki değerleri güncelleyin, eklentiyi yeniden paketleyin ve yükleyin.
version=Gerekli eklenti sürümü
-
elasticsearch.version=Kendi yönettiğiniz Elasticsearch kümesinin sürümü
NotEklenti sürümü, kendi yönettiğiniz Elasticsearch kümesinin sürümüyle eşleşmelidir.
-
java.version=1.8
NotFarklı Elasticsearch sürümleri farklı JDK sürümleri gerektirir. Daha fazla bilgi için resmi Elasticsearch ve eklenti gereksinimlerine bakın.
Farklı açık kaynaklı Elasticsearch sürümlerinin farklı derleme yöntemleri vardır. elasticsearch-repository-oss eklentisini sürümünüzle eşleşecek şekilde derlemeniz gerekir. Örneğin, kendi yönettiğiniz 7.6.2 kümesi JDK 1.8 veya üstünü gerektirir. İlgili eklenti elasticsearch-repository-oss-7.6.2 şeklindedir.