1. Elasticsearch 數(shù)據(jù)備份
Elasticsearch 可以通過(guò)快照命令對(duì)索引或者整個(gè)集群進(jìn)行快照和恢復(fù),第一個(gè)快照會(huì)是一個(gè)數(shù)據(jù)的完整拷貝,但是所有后續(xù)的快照只存儲(chǔ)已存快照和
新數(shù)據(jù)之間的差異。這意味著后續(xù)備份會(huì)相當(dāng)快速,因?yàn)樗鼈冎粋鬏敽苄〉臄?shù)據(jù)量。
快照和恢復(fù)模塊允許創(chuàng)建單個(gè)索引或者整個(gè)集群的快照到
各種各樣的后臺(tái)倉(cāng)庫(kù),本文主要介紹將快照存儲(chǔ)到共享文件系統(tǒng)。
在共享文件系統(tǒng)上創(chuàng)建快照需要執(zhí)行以下步驟:
創(chuàng)建集群的共享目錄;
修改ES配置,添加對(duì)共享目錄的設(shè)置;
創(chuàng)建備份倉(cāng)庫(kù);
創(chuàng)建快照;
查看快照狀態(tài);
必要時(shí)從快照恢復(fù)數(shù)據(jù)。
2. 通過(guò) NFS 設(shè)置共享目錄
NFS 文件共享能解決在集群環(huán)境下圖片、附件等文件共享的問(wèn)題,這里主要用于創(chuàng)建搜索集群的快照共享文件夾。
2.1 角色分配
主機(jī)名IP角色
zk-master01192.168.1.190NFS服務(wù)端
zk-slaver01192.168.1.224NFS客戶端
zk-slaver02192.168.1.48NFS客戶端
2.2 配置 NFS 服務(wù)端
以下操作只在zk-master01(192.168.1.190)上執(zhí)行。
2.2.1 檢查安裝 NFS 服務(wù)
rpm -qa|grep nfsrpm -qa|grep rpcbind
1
2
如果組件沒(méi)有安裝,請(qǐng)執(zhí)行下面的命令進(jìn)行安裝:
yum install nfs-utils rpcbind
1
2.2.2 設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)
CentOS 6 可以通過(guò)下面的命令設(shè)置開(kāi)機(jī)啟動(dòng)服務(wù):
chkconfig nfs onchkconfig rpcbind on
1
2
CentOS 7 可以通過(guò)下面命令設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng):
systemctl enable rpcbind.service systemctl enable nfs-server.service
1
2
2.2.3 啟動(dòng)服務(wù)
CentOS 6 執(zhí)行下面命令:
service rpcbind startservice nfs start
1
2
CentOS 7 執(zhí)行下面命令:
systemctl start rpcbind.service systemctl start nfs-server.service
1
2
2.2.4 創(chuàng)建共享目錄
mkdir /data/elastic/bak/backup_es# 由于備份程序是ES進(jìn)程進(jìn)行創(chuàng)建,因此設(shè)置目錄的擁有者為啟動(dòng)ES程序的用戶chown -R luculent /data/elastic/bak/backup_es
1
2
3
2.2.5 修改配置文件
vi /etc/exports# 添加下面語(yǔ)句/data/elastic/bak/backup_es *(rw,sync,no_root_squash,no_subtree_check)
1
2
3
* :允許所有的網(wǎng)段訪問(wèn)
rw :讀寫(xiě)權(quán)限
sync:資料同步寫(xiě)入內(nèi)在和硬盤(pán)
no_root_squash:nfs客戶端共享目錄使用者權(quán)限
更多配置詳情如下所示:
ro 只讀訪問(wèn) rw 讀寫(xiě)訪問(wèn)sync 所有數(shù)據(jù)在請(qǐng)求時(shí)寫(xiě)入共享 async nfs 在寫(xiě)入數(shù)據(jù)前可以響應(yīng)請(qǐng)求 secure nfs 通過(guò)1024以下的安全TCP/IP端口發(fā)送 insecure nfs 通過(guò)1024以上的端口發(fā)送 wdelay 如果多個(gè)用戶要寫(xiě)入nfs目錄,則歸組寫(xiě)入(默認(rèn)) no_wdelay 如果多個(gè)用戶要寫(xiě)入nfs目錄,則立即寫(xiě)入,當(dāng)使用async時(shí),無(wú)需此設(shè)置。 hide 在nfs共享目錄中不共享其子目錄 no_hide 共享nfs目錄的子目錄 subtree_check 如果共享/usr/bin之類(lèi)的子目錄時(shí),強(qiáng)制nfs檢查父目錄的權(quán)限(默認(rèn)) no_subtree_check 和上面相對(duì),不檢查父目錄權(quán)限 all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。 no_all_squash 保留共享文件的UID和GID(默認(rèn)) root_squash root用戶的所有請(qǐng)求映射成如anonymous用戶一樣的權(quán)限(默認(rèn)) no_root_squas root用戶具有根目錄的完全管理訪問(wèn)權(quán)限 anonuid=xxx 指定nfs
服務(wù)器/etc/passwd文件中匿名用戶的UID anongid=xxx 指定nfs服務(wù)器/etc/passwd文件中匿名用戶的GID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2.2.6 刷新配置立即生效
# 刷新配置使得修改立刻生效exportfs -a# 查看可掛載目錄showmount -e 192.168.1.190
1
2
3
4
5
2.3 配置客戶端
以下指令在zk-slaver01(192.168.1.224)和zk-slaver02(192.168.1.48)上執(zhí)行。
請(qǐng)執(zhí)行配置服務(wù)端的 1-4步驟;NFS 安裝部署完成后,啟動(dòng) NFS,創(chuàng)建備份文件夾。
2.3.5 掛載目錄
# 查看可掛載目錄showmount -e 192.168.1.190# 掛載mount -t nfs 192.168.1.190:/data/elastic/bak/backup_es /data/elastic/bak/backup_es
1
2
3
4
5
2.3.6 設(shè)置開(kāi)機(jī)自動(dòng)掛載
# 查看當(dāng)前掛載df -h# 設(shè)置開(kāi)機(jī)自動(dòng)掛載vi /etc/fstab192.168.1.190:/data/elastic/bak/backup_es /data/elastic/bak/backup_es nfs defaults 0 0
1
2
3
4
5
6
3. 修改 ES 配置
配置完共享目錄后,需要修改 ES 配置,并重啟 ES 使其生效。
# 在 elasticsearch.yml 中添加下面配置來(lái)設(shè)置備份倉(cāng)庫(kù)路徑path.repo: ["/data/elastic/bak/backup_es"]
1
2
4. 創(chuàng)建備份倉(cāng)庫(kù)
4.1 打開(kāi)快照管理界面
ES 插件 kopf 提供了圖形化的界面來(lái)創(chuàng)建管理快照,安裝 kopf 插件的集群直接訪問(wèn):http://es-ip:9200/_plugin/kopf/#!/snapshot即可進(jìn)入快照管理界面。
當(dāng)然也可以通過(guò)點(diǎn)擊菜單進(jìn)入界面。
4.2 創(chuàng)建備份倉(cāng)庫(kù)
在快照界面左側(cè)的文本框添加備份倉(cāng)庫(kù)信息后點(diǎn)擊create按鈕即可完成創(chuàng)建,各個(gè)文本框字段的作用:
repository name:倉(cāng)庫(kù)名稱(chēng)
type:請(qǐng)務(wù)必選擇fs
location:請(qǐng)?zhí)顚?xiě)共享目錄名/data/elastic/bak/backup_es
max_restore_bytes_per_sec:數(shù)據(jù)恢復(fù)時(shí)速度限制,默認(rèn)(40m/s)
max_snapshot_bytes_per_sec:創(chuàng)建備份復(fù)時(shí)速度限制,默認(rèn)(40m/s)
chunk_size:分片大小,默認(rèn)不限制
compress:是否啟用壓縮
當(dāng)然也可以通過(guò) REST 客戶端執(zhí)行下面請(qǐng)求來(lái)創(chuàng)建備份倉(cāng)庫(kù)。
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 }}
1
2
3
4
5
6
7
8
9
10
5. 創(chuàng)建快照
5.1 創(chuàng)建快照
在快照界面右側(cè)的snapshot name文本框填寫(xiě)快照名稱(chēng),repository選擇剛才創(chuàng)建的倉(cāng)庫(kù)es_bak_20180710;ignore_unavailable勾選true;include_global_state勾選false;最后選擇需要參與備份的索引(不選擇表示全部索引,按住ctrl鍵可以進(jìn)行多選),點(diǎn)擊create按鈕即可創(chuàng)建快照。
當(dāng)然也可以通過(guò) REST 客戶端執(zhí)行下面請(qǐng)求來(lái)創(chuàng)建快照。
POST _snapshot/es_bak_20180710/ss_2018_07_10{ "indices": "img_face,lk_other", "include_global_state": false, "ignore_unavailable": true}
1
2
3
4
5
6
5.2 查看快照
直接在地址欄訪問(wèn)下面的地址即可查看ss_2018_07_10快照的信息。
http://es-ip:9200/_snapshot/es_bak_20180710/ss_2018_07_10
1
等待一段時(shí)間重新訪問(wèn),提示創(chuàng)建成功。
6. 從快照恢復(fù)
# 全部恢復(fù)POST /_snapshot/my_backup/snapshot_1/_restore# 恢復(fù)指定的索引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" ]}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18