Elasticsearch 能夠經過快照命令對索引或者整個集羣進行快照和恢復,第一個快照會是一個數據的完整拷貝,可是全部後續的快照只存儲已存快照和新數據之間的差別。這意味着後續備份會至關快速,由於它們只傳輸很小的數據量。編程
快照和恢復模塊容許建立單個索引或者整個集羣的快照到各類各樣的後臺倉庫,本文主要介紹將快照存儲到共享文件系統
。安全
在共享文件系統上建立快照須要執行如下步驟:bash
NFS 文件共享能解決在集羣環境下圖片、附件等文件共享的問題,這裏主要用於建立搜索集羣的快照共享文件夾。服務器
主機名 | IP | 角色 |
---|---|---|
zk-master01 | 192.168.1.190 | NFS服務端 |
zk-slaver01 | 192.168.1.224 | NFS客戶端 |
zk-slaver02 | 192.168.1.48 | NFS客戶端 |
如下操做只在
zk-master01(192.168.1.190)
上執行。async
rpm -qa|grep nfs
rpm -qa|grep rpcbind
複製代碼
若是組件沒有安裝,請執行下面的命令進行安裝:elasticsearch
yum install nfs-utils rpcbind
複製代碼
CentOS 6 能夠經過下面的命令設置開機啓動服務:ide
chkconfig nfs on
chkconfig rpcbind on
複製代碼
CentOS 7 能夠經過下面命令設置開機自動啓動:ui
systemctl enable rpcbind.service
systemctl enable nfs-server.service
複製代碼
CentOS 6 執行下面命令:spa
service rpcbind start
service nfs start
複製代碼
CentOS 7 執行下面命令:插件
systemctl start rpcbind.service
systemctl start nfs-server.service
複製代碼
mkdir /data/elastic/bak/backup_es
# 因爲備份程序是ES進程進行建立,所以設置目錄的擁有者爲啓動ES程序的用戶
chown -R luculent /data/elastic/bak/backup_es
複製代碼
vi /etc/exports
# 添加下面語句
/data/elastic/bak/backup_es *(rw,sync,no_root_squash,no_subtree_check)
複製代碼
*
:容許全部的網段訪問rw
:讀寫權限sync
:資料同步寫入內在和硬盤no_root_squash
:nfs客戶端共享目錄使用者權限更多配置詳情以下所示:
ro 只讀訪問
rw 讀寫訪問sync 全部數據在請求時寫入共享
async nfs 在寫入數據前能夠響應請求
secure nfs 經過1024如下的安全TCP/IP端口發送
insecure nfs 經過1024以上的端口發送
wdelay 若是多個用戶要寫入nfs目錄,則歸組寫入(默認)
no_wdelay 若是多個用戶要寫入nfs目錄,則當即寫入,當使用async時,無需此設置。
hide 在nfs共享目錄中不共享其子目錄
no_hide 共享nfs目錄的子目錄
subtree_check 若是共享/usr/bin之類的子目錄時,強制nfs檢查父目錄的權限(默認)
no_subtree_check 和上面相對,不檢查父目錄權限
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認)
root_squash root用戶的全部請求映射成如anonymous用戶同樣的權限(默認)
no_root_squas root用戶具備根目錄的徹底管理訪問權限
anonuid=xxx 指定nfs服務器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定nfs服務器/etc/passwd文件中匿名用戶的GID
複製代碼
# 刷新配置使得修改馬上生效
exportfs -a
# 查看可掛載目錄
showmount -e 192.168.1.190
複製代碼
如下指令在
zk-slaver01(192.168.1.224)和zk-slaver02(192.168.1.48)
上執行。
請執行配置服務端的 1-4
步驟;NFS 安裝部署完成後,啓動 NFS,建立備份文件夾。
# 查看可掛載目錄
showmount -e 192.168.1.190
# 掛載
mount -t nfs 192.168.1.190:/data/elastic/bak/backup_es /data/elastic/bak/backup_es
複製代碼
# 查看當前掛載
df -h
# 設置開機自動掛載
vi /etc/fstab
192.168.1.190:/data/elastic/bak/backup_es /data/elastic/bak/backup_es nfs defaults 0 0
複製代碼
配置完共享目錄後,須要修改 ES 配置,並重啓 ES 使其生效。
# 在 elasticsearch.yml 中添加下面配置來設置備份倉庫路徑
path.repo: ["/data/elastic/bak/backup_es"]
複製代碼
ES 插件 kopf 提供了圖形化的界面來建立管理快照,安裝 kopf 插件的集羣直接訪問:http://es-ip:9200/_plugin/kopf/#!/snapshot
便可進入快照管理界面。
固然也能夠經過點擊菜單進入界面。
在快照界面左側的文本框添加備份倉庫信息後點擊create
按鈕便可完成建立,各個文本框字段的做用:
repository name
:倉庫名稱type
:請務必選擇fs
location
:請填寫共享目錄名/data/elastic/bak/backup_es
max_restore_bytes_per_sec
:數據恢復時速度限制,默認(40m/s)max_snapshot_bytes_per_sec
:建立備份復時速度限制,默認(40m/s)chunk_size
:分片大小,默認不限制compress
:是否啓用壓縮固然也能夠經過 REST 客戶端執行下面請求來建立備份倉庫。
POST _snapshot/es_bak_20180710
{
"type": "fs",
"settings": {
"location": "/data/elastic/bak/backup_es",
"max_restore_bytes_per_sec": "50mb",
"max_snapshot_bytes_per_sec": "50mb",
"compress": true
}
}
複製代碼
在快照界面右側的snapshot name
文本框填寫快照名稱,repository
選擇剛纔建立的倉庫es_bak_20180710
;ignore_unavailable
勾選true
;include_global_state
勾選false
;最後選擇須要參與備份的索引(不選擇表示所有索引,按住ctrl
鍵能夠進行多選),點擊create
按鈕便可建立快照。
固然也能夠經過 REST 客戶端執行下面請求來建立快照。
POST _snapshot/es_bak_20180710/ss_2018_07_10
{
"indices": "img_face,lk_other",
"include_global_state": false,
"ignore_unavailable": true
}
複製代碼
直接在地址欄訪問下面的地址便可查看ss_2018_07_10
快照的信息。
http://es-ip:9200/_snapshot/es_bak_20180710/ss_2018_07_10
複製代碼
等待一段時間從新訪問,提示建立成功。
# 所有恢復
POST /_snapshot/my_backup/snapshot_1/_restore
# 恢復指定的索引
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1",
"index_settings": {
"index.number_of_replicas": 0
},
"ignore_index_settings": [
"index.refresh_interval"
]
}
複製代碼
Any Code,Code Any!
掃碼關注『AnyCode』,編程路上,一塊兒前行。