Ansible Script 추가
This commit is contained in:
3085
ansible/01_old/roles/test/files/03-ddl-dml/elasticsearch/es-ddl-put.sh
Executable file
3085
ansible/01_old/roles/test/files/03-ddl-dml/elasticsearch/es-ddl-put.sh
Executable file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,220 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
export NUM_SHARDS=2
|
||||
export NUM_REPLICAS=1
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
# 기존 index 재매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "7d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${SOURCE_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": '""${NUM_SHARDS}""',
|
||||
"number_of_replicas": '""${NUM_REPLICAS}""',
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${SOURCE_INDEX}'"
|
||||
}
|
||||
},
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"my_customer_ngram_analyzer": {
|
||||
"tokenizer": "my_customer_ngram_tokenizer"
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"my_customer_ngram_tokenizer": {
|
||||
"type": "ngram",
|
||||
"min_gram": "2",
|
||||
"max_gram": "3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"cluster": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"namespace": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"type": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"unixtime": {
|
||||
"type": "long"
|
||||
},
|
||||
"kind": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"name": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"firsttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"lasttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"data": {
|
||||
"type": "text",
|
||||
"index": false
|
||||
},
|
||||
"id": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"reason": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"message": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "my_customer_ngram_analyzer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"count": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sourceComponent": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sourceHost": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${SOURCE_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
|
||||
# 기존 index 데이터 백업용 index 매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "7d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${DEST_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": '""${NUM_SHARDS}""',
|
||||
"number_of_replicas": '""${NUM_REPLICAS}""',
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${DEST_INDEX}'"
|
||||
}
|
||||
},
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"my_customer_ngram_analyzer": {
|
||||
"tokenizer": "my_customer_ngram_tokenizer"
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"my_customer_ngram_tokenizer": {
|
||||
"type": "ngram",
|
||||
"min_gram": "2",
|
||||
"max_gram": "3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"cluster": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"namespace": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"type": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"unixtime": {
|
||||
"type": "long"
|
||||
},
|
||||
"kind": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"name": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"firsttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"lasttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"data": {
|
||||
"type": "text",
|
||||
"index": false
|
||||
},
|
||||
"id": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"reason": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"message": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "my_customer_ngram_analyzer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"count": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sourceComponent": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sourceHost": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${DEST_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
@@ -0,0 +1,28 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${SOURCE_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${source_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${dest_index_date}'"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,30 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${source_index_date}
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${dest_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${source_index_date}'"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,21 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${dest_index_date}
|
||||
done
|
||||
@@ -0,0 +1,184 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
export NUM_SHARDS=2
|
||||
export NUM_REPLICAS=1
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
# 기존 index 재매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "90d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${SOURCE_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": "2",
|
||||
"number_of_replicas": "1",
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${SOURCE_INDEX}'"
|
||||
},
|
||||
"sort.field": "checkTime",
|
||||
"sort.order": "desc"
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"licenseType": {
|
||||
"type": "integer"
|
||||
},
|
||||
"expireDate": {
|
||||
"type": "text"
|
||||
},
|
||||
"targetNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"allowableRange": {
|
||||
"type": "integer"
|
||||
},
|
||||
"licenseClusterId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"tenantId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"checkTime": {
|
||||
"type": "date",
|
||||
"format": "epoch_millis"
|
||||
},
|
||||
"checkResult": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${SOURCE_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
|
||||
# 기존 index 데이터 백업용 index 매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "90d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${DEST_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": "2",
|
||||
"number_of_replicas": "1",
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${DEST_INDEX}'"
|
||||
},
|
||||
"sort.field": "checkTime",
|
||||
"sort.order": "desc"
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"licenseType": {
|
||||
"type": "integer"
|
||||
},
|
||||
"expireDate": {
|
||||
"type": "text"
|
||||
},
|
||||
"targetNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"allowableRange": {
|
||||
"type": "integer"
|
||||
},
|
||||
"licenseClusterId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"tenantId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"checkTime": {
|
||||
"type": "date",
|
||||
"format": "epoch_millis"
|
||||
},
|
||||
"checkResult": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${DEST_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
@@ -0,0 +1,32 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${SOURCE_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${source_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${dest_index_date}'"
|
||||
},
|
||||
"script": {
|
||||
"lang": "painless",
|
||||
"source": "ctx._source.checkTime = Instant.ofEpochSecond(ctx._source.checkTime).toEpochMilli()"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,30 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${source_index_date}
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${dest_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${source_index_date}'"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,21 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${dest_index_date}
|
||||
done
|
||||
@@ -0,0 +1,31 @@
|
||||
** 두 인덱스간에 데이터 복재가 잘 됐는지 확인해가며 실행 **
|
||||
|
||||
1) 1_kubernete_event_info_create_dest_source_index.sh 스크립트 실행
|
||||
: 기존 인덱스에 새로운 데이터 타입 매핑작업
|
||||
: 기존 인덱스 데이터 백업용 인덱스 매핑작업
|
||||
|
||||
2) 2_kubernete_event_info_reindex_to_dest_from_source.sh 스크립트 실행
|
||||
: 기존 인덱스 데이터 백업용 인덱스로 리인덱싱
|
||||
|
||||
3) curl -X GET http://{IP}:{PORT}/_cat/indices?pretty | grep kubernete_event_info
|
||||
: 백업용 인덱스에 기존 인덱스 데이터가 백업될때까지 대기하기
|
||||
: 7번째 칸에 숫자가 일자별 인덱스 숫자와 동일할때까지 대기하기
|
||||
|
||||
4) 3_kubernete_event_info_reindex_to_source_from_dest.sh 스크립트 실행
|
||||
: 기존 인덱스 삭제
|
||||
: 새로 매핑된 기존 인덱스에 백업용 인덱스에 담긴 데이터 다시 리인덱싱
|
||||
|
||||
5) curl -X GET http://{IP}:{PORT}/_cat/indices?pretty | grep kubernete_event_info
|
||||
: 새로 매핑된 인덱스에 백업용 인덱스 데이터가 백업될때까지 대기하기
|
||||
: 7번째 칸에 숫자가 일자별 인덱스 숫자와 동일할때까지 대기하기
|
||||
|
||||
6) 4_kubernete_event_info_delete_dest_index.sh 스크립트 실행
|
||||
: 백업용 인덱스 삭제
|
||||
|
||||
** 아래 스크립트도 위와같은 순서로 진행 **
|
||||
** grep license_history 로 변경해서 데이터 복재 확인 **
|
||||
5_license_history_create_dest_source_index.sh
|
||||
6_license_history_reindex_to_dest_from_source.sh
|
||||
7_license_history_reindex_to_source_from_dest.sh
|
||||
8_license_history_delete_dest_index.sh
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
export NUM_SHARDS=2
|
||||
export NUM_REPLICAS=1
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
# 기존 index 재매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "7d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${SOURCE_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": '""${NUM_SHARDS}""',
|
||||
"number_of_replicas": '""${NUM_REPLICAS}""',
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${SOURCE_INDEX}'"
|
||||
}
|
||||
},
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"my_customer_ngram_analyzer": {
|
||||
"tokenizer": "my_customer_ngram_tokenizer"
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"my_customer_ngram_tokenizer": {
|
||||
"type": "ngram",
|
||||
"min_gram": "2",
|
||||
"max_gram": "3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"cluster": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"namespace": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"type": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"unixtime": {
|
||||
"type": "long"
|
||||
},
|
||||
"kind": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"name": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"firsttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"lasttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"data": {
|
||||
"type": "text",
|
||||
"index": false
|
||||
},
|
||||
"id": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"reason": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"message": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "my_customer_ngram_analyzer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"count": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sourceComponent": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sourceHost": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${SOURCE_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
|
||||
# 기존 index 데이터 백업용 index 매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "7d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${DEST_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": '""${NUM_SHARDS}""',
|
||||
"number_of_replicas": '""${NUM_REPLICAS}""',
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${DEST_INDEX}'"
|
||||
}
|
||||
},
|
||||
"analysis": {
|
||||
"analyzer": {
|
||||
"my_customer_ngram_analyzer": {
|
||||
"tokenizer": "my_customer_ngram_tokenizer"
|
||||
}
|
||||
},
|
||||
"tokenizer": {
|
||||
"my_customer_ngram_tokenizer": {
|
||||
"type": "ngram",
|
||||
"min_gram": "2",
|
||||
"max_gram": "3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"cluster": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"namespace": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"type": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"unixtime": {
|
||||
"type": "long"
|
||||
},
|
||||
"kind": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"name": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"firsttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"lasttime": {
|
||||
"type": "long"
|
||||
},
|
||||
"data": {
|
||||
"type": "text",
|
||||
"index": false
|
||||
},
|
||||
"id": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"reason": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"message": {
|
||||
"type": "text",
|
||||
"fields": {
|
||||
"ngram": {
|
||||
"type": "text",
|
||||
"analyzer": "my_customer_ngram_analyzer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"count": {
|
||||
"type": "integer"
|
||||
},
|
||||
"sourceComponent": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"sourceHost": {
|
||||
"type": "keyword"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${DEST_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
@@ -0,0 +1,28 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${SOURCE_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${source_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${dest_index_date}'"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,30 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${source_index_date}
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${dest_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${source_index_date}'"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,21 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='kubernetes_event_info'
|
||||
DEST_INDEX='kubernetes_event_info_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${dest_index_date}
|
||||
done
|
||||
@@ -0,0 +1,184 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
export NUM_SHARDS=2
|
||||
export NUM_REPLICAS=1
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
# 기존 index 재매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "90d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${SOURCE_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${SOURCE_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": "2",
|
||||
"number_of_replicas": "1",
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${SOURCE_INDEX}'"
|
||||
},
|
||||
"sort.field": "checkTime",
|
||||
"sort.order": "desc"
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"licenseType": {
|
||||
"type": "integer"
|
||||
},
|
||||
"expireDate": {
|
||||
"type": "text"
|
||||
},
|
||||
"targetNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"allowableRange": {
|
||||
"type": "integer"
|
||||
},
|
||||
"licenseClusterId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"tenantId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"checkTime": {
|
||||
"type": "date",
|
||||
"format": "epoch_millis"
|
||||
},
|
||||
"checkResult": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${SOURCE_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
|
||||
# 기존 index 데이터 백업용 index 매핑
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_ilm/policy/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"policy": {
|
||||
"phases": {
|
||||
"delete": {
|
||||
"min_age": "90d",
|
||||
"actions": {
|
||||
"delete": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
curl -X PUT 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_template/'"${DEST_INDEX}"'' -H 'Content-Type: application/json' -d '{
|
||||
"order": 0,
|
||||
"index_patterns": [
|
||||
"'${DEST_INDEX}'-*"
|
||||
],
|
||||
"settings": {
|
||||
"index": {
|
||||
"number_of_shards": "2",
|
||||
"number_of_replicas": "1",
|
||||
"refresh_interval": "1s",
|
||||
"lifecycle": {
|
||||
"name": "'${DEST_INDEX}'"
|
||||
},
|
||||
"sort.field": "checkTime",
|
||||
"sort.order": "desc"
|
||||
}
|
||||
},
|
||||
"mappings": {
|
||||
"properties": {
|
||||
"licenseType": {
|
||||
"type": "integer"
|
||||
},
|
||||
"expireDate": {
|
||||
"type": "text"
|
||||
},
|
||||
"targetNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realNodesCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realPodsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realSvcsCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"realCoreCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"allowableRange": {
|
||||
"type": "integer"
|
||||
},
|
||||
"licenseClusterId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"tenantId": {
|
||||
"type": "keyword"
|
||||
},
|
||||
"checkTime": {
|
||||
"type": "date",
|
||||
"format": "epoch_millis"
|
||||
},
|
||||
"checkResult": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"aliases": {
|
||||
"'${DEST_INDEX}'": {}
|
||||
}
|
||||
}'
|
||||
@@ -0,0 +1,32 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${SOURCE_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${source_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${dest_index_date}'"
|
||||
},
|
||||
"script": {
|
||||
"lang": "painless",
|
||||
"source": "ctx._source.checkTime = Instant.ofEpochSecond(ctx._source.checkTime).toEpochMilli()"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,30 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${source_index_date}
|
||||
|
||||
curl -X POST 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_reindex?wait_for_completion=false' -H 'Content-Type: application/json' -d '{
|
||||
"source": {
|
||||
"index": "'${dest_index_date}'"
|
||||
},
|
||||
"dest": {
|
||||
"index": "'${source_index_date}'"
|
||||
}
|
||||
}'
|
||||
done
|
||||
@@ -0,0 +1,21 @@
|
||||
temp=$(kubectl get svc -n imxc -o wide | grep elasticsearch | grep NodePort | awk {'print $5'})
|
||||
export ES_NODEPORT=${temp:5:(-4)}
|
||||
echo $ES_NODEPORT
|
||||
|
||||
export MASTER_IP=$(kubectl get nodes -o wide | grep master | awk {'print $6'})
|
||||
echo $MASTER_IP
|
||||
|
||||
SOURCE_INDEX='license_history'
|
||||
DEST_INDEX='license_history_backup'
|
||||
|
||||
curl -X GET 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/_cat/indices' | grep "${DEST_INDEX}" | awk '{print $3}' | while read line
|
||||
do
|
||||
date=${line: (-11)}
|
||||
source_index_date=${SOURCE_INDEX}${date}
|
||||
dest_index_date=${DEST_INDEX}${date}
|
||||
|
||||
echo $source_index_date
|
||||
echo $dest_index_date
|
||||
|
||||
curl -X DELETE 'http://'"${MASTER_IP}"':'"${ES_NODEPORT}"'/'${dest_index_date}
|
||||
done
|
||||
@@ -0,0 +1,31 @@
|
||||
** 두 인덱스간에 데이터 복재가 잘 됐는지 확인해가며 실행 **
|
||||
|
||||
1) 1_kubernete_event_info_create_dest_source_index.sh 스크립트 실행
|
||||
: 기존 인덱스에 새로운 데이터 타입 매핑작업
|
||||
: 기존 인덱스 데이터 백업용 인덱스 매핑작업
|
||||
|
||||
2) 2_kubernete_event_info_reindex_to_dest_from_source.sh 스크립트 실행
|
||||
: 기존 인덱스 데이터 백업용 인덱스로 리인덱싱
|
||||
|
||||
3) curl -X GET http://{IP}:{PORT}/_cat/indices?pretty | grep kubernete_event_info
|
||||
: 백업용 인덱스에 기존 인덱스 데이터가 백업될때까지 대기하기
|
||||
: 7번째 칸에 숫자가 일자별 인덱스 숫자와 동일할때까지 대기하기
|
||||
|
||||
4) 3_kubernete_event_info_reindex_to_source_from_dest.sh 스크립트 실행
|
||||
: 기존 인덱스 삭제
|
||||
: 새로 매핑된 기존 인덱스에 백업용 인덱스에 담긴 데이터 다시 리인덱싱
|
||||
|
||||
5) curl -X GET http://{IP}:{PORT}/_cat/indices?pretty | grep kubernete_event_info
|
||||
: 새로 매핑된 인덱스에 백업용 인덱스 데이터가 백업될때까지 대기하기
|
||||
: 7번째 칸에 숫자가 일자별 인덱스 숫자와 동일할때까지 대기하기
|
||||
|
||||
6) 4_kubernete_event_info_delete_dest_index.sh 스크립트 실행
|
||||
: 백업용 인덱스 삭제
|
||||
|
||||
** 아래 스크립트도 위와같은 순서로 진행 **
|
||||
** grep license_history 로 변경해서 데이터 복재 확인 **
|
||||
5_license_history_create_dest_source_index.sh
|
||||
6_license_history_reindex_to_dest_from_source.sh
|
||||
7_license_history_reindex_to_source_from_dest.sh
|
||||
8_license_history_delete_dest_index.sh
|
||||
|
||||
Reference in New Issue
Block a user