最近在做 Elasticsearch 集羣的內容,除了集羣的規劃問題,優化問題。在elasticsearch 升級的時候,做數據遷移也是一件頭疼的事。自己做遇到了很多的坑,慢慢的填。比方說集羣在配置安全認證以後,如何跨集羣同步數據。這個問題在另外一篇文章中呈現。
而這篇文章主要是通過 Snapshot 的方式進行數據的遷移。
以下內容是我做的真實案例,以及我在做的時候遇到的一些問題,以及我自己的一些疑問。
首先說一下,我這個案例做是一臺機器上兩個節點形成了集羣。
# # 首先這我問題,我也沒涉及過,於是就先從網上找了一些數據遷移方面的文章
看到最多的就是這篇文章:https://blog.csdn.net/star1210644725/article/details/106774931
這篇文章我也轉載了,剛開始看的時候覺得挺好 ,但是後邊做起來還是有挺多坑的。可以看看,我就是看不太明白,所以才找了其他是文章來看的。跟着下邊的做就可以了。
這篇文章裏邊提到了 fs 文件系統,我還不太明白,可能是需要搭建共享文件系統。我在下邊的案例裏邊沒有用,就是一個文件夾。來存放快照。
# # 下邊是我跟着做的案例,跟着一步一步的做,就沒問題
# # 準備測試數據
運行起來我們的Kibana:
我們分別點擊上面的1和2處:
點擊上面的“Add data”。這樣我們就可以把我們的kibana_sample_data_logs索引加載到Elasticsearch中。
GET _cat/indices/kibana_sample_data_logs
# # 註冊repository
首先我們在我們的電腦上創建一個如下的目錄:
/shared_folder/my_repo
我們在termimal中打入如下的命令:
mkdir -p shared_folder/my_repo/
$ pwd
/Users/liuxg/shared_folder
bogon:shared_folder liuxg$ ls -al
drwxr-xr-x 2 liuxg staff 64 Nov 13 13:23 my_repo
將以下path.repo屬性添加到我們運行的所有node的elasticsearch.yml文件中:
path.repo: /Users/liuxg/shared_folder/my_repo
注意,針對你的情況,你需要改動這裏的path路徑。
然後啓動我們的Elasticsearch及Kibana。緊接着,我們在Kibana console中打入如下的命令:
PUT _snapshot/my_local_repo
{
"type": "fs",
"settings": {
"location": "/Users/liuxg/shared_folder/my_repo"
}
}
注意這裏的location是根據我自己的電腦的路徑來設置的。你需要根據自己實際的路徑進行修改。在這裏my_local_repo是我們的repository名稱。
接下來,我們打入如下的命令來對我們的kibana_sample_data_logs索引進行snapshot:
PUT _snapshot/my_local_repo/snapshot_1
{
"indices": "kibana_sample_data_logs",
"ignore_unavailable": true,
"include_global_state": true
}
我們可以通過如下的命令來查看snapshot:
GET _snapshot/my_local_repo/_all
我們可以在右邊看到snapshot_1出現在列表之中,說明我們已經成功地創建了這個snapshot。
我們接下來可以通過如下的命令來刪除kibana_sample_data_logs索引:
DELETE kibana_sample_data_logs
這樣我們徹底地刪除了這個索引。那麼我們該如何把之前備份的數據恢復回來呢?
在Kibana中打入如下的命令:
POST _snapshot/my_local_repo/snapshot_1/_restore
{
"indices": "kibana_sample_data_logs",
"ignore_unavailable": true,
"include_global_state": false
}
在執行完上面的命令後,我們可以通過如下的命令來查看恢復後的kibana_sample_data_logs索引:
GET kibana_sample_data_logs/_count
顯然我們已經成功地恢復了我們之前備份的數據。
這個時候,如果我們去到我們的snapshot文件目錄,我們可以看到:
$ pwd
/Users/liuxg/shared_folder/my_repo
bogon:my_repo liuxg$ ls
index-0 meta-TzygGpJ1SOK5yJdsmc1lng.dat
index.latest snap-TzygGpJ1SOK5yJdsmc1lng.dat
indices
顯然在文件目錄中,已經有新生產的文件了。