backup และ restore index ของ ElasticSearch
โพสต์นี้คนอ่านที่เป็นเป้าหมายหลักก็คือผมเอง
อย่างแรกเลยสมมุติว่า ElasticSearch ที่รันอยู่แล้ว
สร้าง dir ที่จะเก็บ snapshot และ chown ให้เป็นของ user เดียวกับที่ daemon ของ elasicsearch รันอยู่
แก้ elasticsearch.yml ที่ path.repo ให้ชี้ไปที่ dir ที่สร้างไว้ในข้อ 1 เช่น [“/bak/b1”] ไรงี้
backup/snapshot
สร้าง repo
curl -X PUT "localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/bak/b1"
}
}
'
restore
สร้าง repo
curl -X PUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true&pretty"
ตอนนี้ก็คือจะเสร็จแล้ว สิ่งที่ผมทำคือ rsync /bak/b1 ไปเครื่องอื่นแล้วลอง restore เพื่อไม่ให้น่าเบื่อเครื่องอื่นที่ว่าก็จะใช้ docker ด้วย
พอ rsync มาแล้ว ก็ chown -R 1000:1000 $(pwd)/bak/b1
สร้าง elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
path.repo: ["/usr/share/elasticsearch/bak"]
รัน ElasticSearch ผ่าน Docker
docker run \
--name=es6 \
--net=host \
-e "discovery.type=single-node" \
-v $(pwd)/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v $(pwd)/bak/b1:/usr/share/elasticsearch/bak \
docker.elastic.co/elasticsearch/elasticsearch:6.8.4
สร้าง repo
curl -X PUT "localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/bak"
}
}
'
สั่ง restore
curl -X PUT "localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/usr/share/elasticsearch/bak"
}
}
'
เสร็จแล้ว
คำสั่งต่าง ๆ ก็มาจาก guide ครับ