Elasticsearch:使用Snapshot 進行數據備份遷移 - 實戰

  最近在做 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

顯然在文件目錄中,已經有新生產的文件了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章