Bạn Tìm Gì Hôm Nay ...?
Tất cả đều có chỉ trong 1 nốt nhạc !
Nếu cần hỗ trợ chi tiết gọi 1900 9477
Elasticsearch là một công cụ tìm kiếm dựa trên nền tảng Apache Lucene
. Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON
Khi sử dụng Elasticsearch một trong những công việc chúng ta phải làm thường xuyên là Snapshot and Restore data. Cách cài đặt Elatichsearch các bạn có thể xem tại đây Setup ElasticSearch
Elasticsearch cung cấp cho chúng ta module snapshot để tạo nhanh các bản snapshot lưu trữ các indices hoặc một phần hoặc toàn bộ các cluster tại một thời điểm nào đó. Snapshot tỏ ra mạnh mẽ và hữu dụng nhưng có một vài khuyết điểm mà chúng ta phải lưu ý như sau:
Các snapshot không tương thích với các phiên bản thì không thể phục hồi được, hãy lưu ý điều này khi update các version mới cho elaticsearch.
Bạn không thể sao lưu dữ liêu Elasticsearch chỉ bằng thao tác đơn giản là copy folder. Elasticsearch có thể bị thanh đổi nội dung, cấu trúc dữ liệu khi đang chạy. Việc khôi phục dữ liệu từ folder sao chép có thể bị lỗi
Vì vậy cách nhanh và duy nhất để sao lưu là snapshot
Đầu tiên chúng ta phải tiến hành tạo repositories để lưu trữ các snapshot, Elaticsearch cung cấp một số repositories khả dụng như sau:
- AWS (You can store the backups on S3)
- HPFS for Hadoop
- Azure Cloud
Bài viết này sẽ sử dụng repo local cho snapshot Elasticsearch
. Kiểm tra xem chúng ta đã tạo ra các repositories nào chưa:
$ curl -XGET 'localhost:9200/_snapshot/_all?pretty=true'
Tạo thư mục lưu trữ các repositories:
$ mkdir /usr/share/elasticsearch/data_backup
Cấp quyền cho elatichsearch lưu trữ vào thư muc:
$ chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/data_backup
Config elasticsearch.yml tại /etc/elasticsearch/elasticsearch.yml tạo đường dẫn tới thư mục trên bằng cách khai báo path.repo:
path.repo: ["/usr/share/elasticsearch/data_backup"]
Khởi dộng lại Elatichsearch:
$ sudo service elasticsearch restart
Mapping và khởi tạo snapshot với repositories trên:
$ curl -XPUT -H "Content-type: application/json" -d '{ "type": "fs", "settings": { "compress" : true, "location": "/usr/share/elasticsearch/data_backup" } }' 'http://localhost:9200/_snapshot/test_backup'
Sử dụng snapshot trên lưu trữ toàn bộ cluster và các indices:
$ curl -XPUT 'localhost:9200/_snapshot/test_backup/snapshot_1?wait_for_completion=true'
Việc restore data trong Elasticsearch thì khá là dễ dàng nhờ có module restore. Đầu tiên chúng ta phải đóng toàn bộ các index đang mở:
$ curl -XPOST 'localhost:9200/_all/_close'
Sử dụng snapshot phục hồi dữ liệu nhanh chóng:
$ curl -XPOST 'localhost:9200/_snapshot/test_backup/snapshot_1/_restore'
Mở lại toàn bộ index cũ:
$ curl -XPOST 'localhost:9200/_all/_open'
Tài liệu tham khảo: https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html https://qbox.io/blog/elasticsearch-data-snapshots-restore-tutorial 3, Script backup incremental
tạo file bash /root/snap_es.sh với nội dung bên dưới:
#!/bin/bash
set `date`
now=$(date +”%d-%m-%Y”)
snapshotName=snap-$now
echo “=========== ELK Incremental backup register ==========” >> /tmp/file.txt;
curl -XPUT -H “content-type:application/json” ‘http://127.0.0.1:9200/_snapshot/es_backup’ -d ‘{“type”:”fs”,”settings”:{“location”:”/usr/share/elasticsearch/data_backup
“,”compress”:true}}’ >> /tmp/file.txt;
echo “======= ELK Incremental snap =======” >> /tmp/file.txt;
curl -XPUT http://127.0.0.1:9200/_snapshot/es_backup/$snapshotName?wait_for_completion=true >> /tmp/file.txt;
echo “======== ELK snapshort list ========” >> /tmp/file.txt;
curl -XGET http://127.0.0.1:9200/_snapshot/es_backup/_all?pretty >> /tmp/file.txt;
#mailx -s “ELK Incremental Backup Completed” xxxxxx@pavietnam.vn < /tmp/file.txt;
rm -rvf /tmp/file.txt;
Thay IP 127.0.0.1 bằng IP nếu ES listen theo IP
Thực hiện chạy file sh /root/snap_es.sh
Chạy file bash backup snapshot xong dùng cmd dưới để check danh sách snapshot backup
curl -XGET http://127.0.0.1:9200/_snapshot/es_backup/_all?pretty