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』,编程路上,一块儿前行。