這篇文章給大家分享的是有關(guān)ES通過快照方式進行數(shù)據(jù)遷移的內(nèi)容。小編覺得挺實用的,因此分享給大家學(xué)習。如下資料是關(guān)于數(shù)據(jù)遷移的步驟。
為迎江等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及迎江網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、迎江網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!1、對機房的es節(jié)點安裝oss插件
阿里云提供了es的oss插件,地址 https://github.com/aliyun/elasticsearch-repository-oss 需要注意的是,安裝這個插件需要滾動重啟es集群的。
安裝oss插件的這個前置操作我這里就跳過了,沒啥好說的。參考官方文檔提出的滾動重啟操作步驟進行就行。
2、開通阿里云oss的bucket,并記錄下accesskey相關(guān)授權(quán)信息
3、我們快照數(shù)據(jù)通過內(nèi)網(wǎng)直接打到阿里云oss的專用的bucket里面(TIPS:拉了專線,走內(nèi)網(wǎng),需要加個路由才能用oss的內(nèi)網(wǎng)域名地址)
下面是我執(zhí)行快照和恢復(fù)的全流程:
step1_idc_reg_oss.sh 注冊idc的es快照倉庫地址到阿里云oss
#!/bin/bash # 傳參1 為 es集群的 lb地址 (用后端真實節(jié)點地址也行) echo "作用:" echo "注冊快照地址到阿里云到oss倉庫" echo # 找出集群的名稱 CLUSTER_NAME=$(curl -s http://$1:9200/ | grep cluster_name | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') echo "ES集群名稱:" $CLUSTER_NAME echo # 注冊快照倉庫 ,走專線 oss內(nèi)網(wǎng)地址 curl -s -XPUT http://$1:9200/_snapshot/$CLUSTER_NAME -d "{ \"type\": \"oss\", \"settings\": { \"base_path\": \"$CLUSTER_NAME\", \"endpoint\": \"http://oss-cn-hangzhou-internal.aliyuncs.com\", \"access_key_id\": \"thisismyaccesskeyid\", \"secret_access_key\": \"thisismykey\", \"bucket\": \"snapshot-es\", \"compress\": true } }" # 確認倉庫是否ok curl -s -XGET http://$1:9200/_snapshot/$CLUSTER_NAME | jq .step2_first_snapshot.sh 對idc的es打一個全量快照到阿里云oss
#!/bin/bash # 傳參1 為 es集群的 lb地址 (用后端真實節(jié)點地址也行) echo "作用:" echo "后臺打快照存到阿里云oss倉庫" echo # 找出集群的名稱 CLUSTER_NAME=$(curl -s http://$1:9200/ | grep cluster_name | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') echo "ES集群名稱:" $CLUSTER_NAME echo # 在后臺打快照 echo "開始在后臺打快照" curl -s -XPUT http://$1:9200/_snapshot/$CLUSTER_NAME/$(date +%Y_%m_%d_%H_%M) | jq . echo echo "查看快照的進度方法: curl -XGET http://$1:9200/_snapshot/$CLUSTER_NAME/_all?pretty" echo注意:step2 這個腳本第一次跑通后,我們可以在上云前1-2天加個cronjob每小時跑一次,這樣在最后上云遷移的時候,增量快照需要的時間就會很短暫。大幅度減少不可用時間。
step3_aliyun_reg_oss.sh 注冊阿里云的es快照倉庫地址到阿里云oss
#!/bin/bash # 傳參1 為 機房es集群的LB地址 # 傳參2 為 阿里云es集群的域名 echo "作用:" echo "注冊阿里云es到阿里云的oss倉庫" echo # 找出集群的名稱 CLUSTER_NAME=$(curl -s http://$1:9200/ | grep cluster_name | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') echo "ES集群名稱:" $CLUSTER_NAME echo # 阿里云關(guān)聯(lián)oss倉庫 curl -s -XPUT http://$2:9200/_snapshot/$CLUSTER_NAME -d "{ \"type\": \"oss\", \"settings\": { \"base_path\": \"$CLUSTER_NAME\", \"endpoint\": \"http://oss-cn-hangzhou-internal.aliyuncs.com\", \"access_key_id\": \"thisismyaccesskeyid\", \"secret_access_key\": \"thisismykey\", \"bucket\": \"snapshot-es\", \"compress\": true } }" # 確認快照倉庫是否ok curl -s -XGET http://$2:9200/_snapshot/$CLUSTER_NAME?pretty | jq . echo "curl -s -XGET http://$2:9200/_snapshot/$CLUSTER_NAME?pretty | jq ."step4 開始,需要在割接當晚操作
step4_stop_write_idc_index.sh 關(guān)閉idc 的es索引的寫權(quán)限,保留只讀權(quán)限
#!/bin/bash # 傳參1 為 es集群的 lb地址 (用后端真實節(jié)點地址也行) echo "作用:" echo "關(guān)閉機房es的索引的寫權(quán)限,以便后續(xù)進行最后一次的快照操作" echo #找出集群的名稱 CLUSTER_NAME=$(curl -s http://$1:9200/ | grep cluster_name | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') echo $CLUSTER_NAME # 關(guān)閉全部索引的寫權(quán)限,保留讀權(quán)限 echo "開始關(guān)閉全部索引的寫權(quán)限,保留讀權(quán)限..." curl -s -XPUT http://$1:9200/_all/_settings -d '{ "index": { "blocks": { "write": "true" } } }' # 官方文檔 https://www.elastic.co/guide/en/elasticsearch/reference/2.3/index-modules.html # index.blocks.read_only # Set to true to make the index and index metadata read only, false to allow writes and metadata changes.(設(shè)置為true 可以禁止對索引和索引的metadata進行修改,控制的更嚴格些) # index.blocks.write #Set to true to disable write operations against the index.(設(shè)置為 true 來禁止對索引的寫操作。但索引的 metadata 可以正常寫。) # 注意:index.blocks.read_only 和 index.blocks.write 這2個參數(shù),不能同時使用,只能選其一step5_increase_snapshot.sh 再人工執(zhí)行一次快照腳本(這時候打的是增量快照,耗時不會太久)
#!/bin/bash # 傳參1 為 es集群的 lb地址 (用后端真實節(jié)點地址也行) echo "作用:" echo "關(guān)閉機房es寫權(quán)限后,后臺再打一次快照存到阿里云oss倉庫" echo # 找出集群的名稱 CLUSTER_NAME=$(curl -s http://$1:9200/ | grep cluster_name | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') echo "ES集群名稱:" $CLUSTER_NAME echo # 在后臺打快照 echo "開始在后臺打快照" echo "查看快照的進度方法: curl -XGET http://$1:9200/_snapshot/$CLUSTER_NAME/_all?pretty" curl -s -XPUT http://$1:9200/_snapshot/$CLUSTER_NAME/$(date +%Y_%m_%d_%H_%M) | jq .注意: 確保step5的快照進度完成后,才能執(zhí)行下面的step6操作!!
step6_restore_into_aliyun.sh 將oss上面的最新快照恢復(fù)到阿里云ES環(huán)境
#!/bin/bash # 從阿里云oss恢復(fù)數(shù)據(jù)到阿里云es # 參數(shù)1 為 idc 的es 的lb地址 (不用帶端口號) # 參數(shù)2 為 阿里云es 的域名 (不用帶端口號) echo "作用:" echo "從oss倉庫恢復(fù)數(shù)據(jù)到阿里云es" echo # 找出集群的名稱 CLUSTER_NAME=$(curl -s http://$1:9200/ | grep cluster_name | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') echo "ES集群名稱:" $CLUSTER_NAME echo # 找到最新的快照名稱: SNAPSHOT_NAME=$(curl -s -XGET http://$2:9200/_snapshot/$CLUSTER_NAME/_all?pretty | egrep snapshot | tail -1 | awk -F ':' '{print $2}' | awk -F '"' '{print $2}') echo "最后一個snapshot的名稱:" ${SNAPSHOT_NAME} # 調(diào)整阿里云ES參數(shù) 加快恢復(fù)速度 echo "調(diào)整阿里云ES參數(shù) 加快恢復(fù)速度" curl -s -XPUT http://$2:9200/_cluster/settings?flat_settings=true -d '{ "transient": { "indices.recovery.concurrent_streams": "10", "indices.recovery.concurrent_small_file_streams": "10", "indices.recovery.max_bytes_per_sec": "100mb", "cluster.routing.allocation.node_concurrent_recoveries": "24" } }' | jq . # 執(zhí)行阿里云ES數(shù)據(jù)恢復(fù)操作 echo "開始阿里云ES數(shù)據(jù)恢復(fù)" curl -s -XPOST http://$2:9200/_snapshot/$CLUSTER_NAME/$SNAPSHOT_NAME/_restore -d '{ "index_settings": { "index.number_of_replicas": 0 } }' echo echo echo "查看恢復(fù)的進度 curl -s -X GET http://$2:9200/_recovery/ | jq ."等阿里云ES集群變綠后(通過_cat api 或者 cerebro觀察),開始執(zhí)行step7操作
step7_aliyun_open_index_increase_replica.sh 打開阿里云es的寫功能,并調(diào)整index副本為1
#!/bin/bash # 調(diào)整阿里云es 增加副本數(shù) # 參數(shù)1 為 阿里云es 的域名 (不用帶端口號) echo "作用:" echo "阿里云es打開寫,并調(diào)整副本改為1" echo echo "打開阿里云ES的寫權(quán)限" curl -s -XPUT http://$1:9200/_all/_settings -d '{ "index": { "blocks": { "write": "false" } } }' sleep 1 echo "調(diào)整全部index的副本為1" curl -s -XPUT http://$1:9200/_all/_settings -d '{ "number_of_replicas": 1 } '至此, 我們就可以通知開發(fā)測試 發(fā)版后跟進測試了。
可選步驟
step8_close_idc_index.sh 建議在完成遷移后,關(guān)閉老的es的索引,這樣如果有連接連到老es,就會報錯便于及時發(fā)現(xiàn)問題
#!/bin/bash # 傳參1 為 es集群的 lb地址 (用后端真實節(jié)點地址也行) echo "作用:" echo "關(guān)閉機房es的索引" echo # 列出打開狀態(tài)的索引 idx=$(curl -s -XGET http://$1:9200/_cat/indices?h=index,status| grep -v close) indices=$(echo $idx| sed 's/ /,/g'| sed 's/,open//g') echo "當前打開的索引如下:" echo $indices echo echo echo "開始執(zhí)行close index 操作 ...." curl -s -XPOST http://$1:9200/$indices/_close?pretty | jq .關(guān)于ES通過快照方式進行數(shù)據(jù)遷移就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站名稱:ES通過快照方式進行數(shù)據(jù)遷移-創(chuàng)新互聯(lián)
鏈接URL:http://aaarwkj.com/article0/pjdio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、定制網(wǎng)站、云服務(wù)器、網(wǎng)站收錄、Google、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容