基于NFS搭建ES快照仓库

原文:elasticsearch 使用快照进行备份 - 技术经验 - W3xue

第一步:安装rpcbind、nfs-utils

nfs-utils:既包含客户端,又包含服务器

Way1:在线安装

yum install rpcbind nfs-utils -y

Way2:离线安装

浏览器搜索(亲测egde可用) {软件包名} download pkgs

安装rpcbind:libtrirpc -> rpcbind
安装nfs-utils:libevent -> libref_array -> libbasicobjects -> libcollection -> libpath_utils -> libini_config ->
libverto-libevent -> gssproxy -> keyutils -> libnfsidmap -> quota-nls -> tcp_wrappers -> quota -> nfs-utils

a、搜索

b、选择对应的版本

c、下拉找到Download二进制包连接,复制到网站即可开始下载

d、安装软件

rpm -i 软件包.rpm

第二步:共享目录

a、创建共享目录

mkdir /udisk/elasticsnapshot
chmod 0777 /udisk/elasticsnapshot -R 

b、修改NFS服务配置文件,/etc/exports

/udisk/elasticsnapshot 10.9.121.211/32(rw,sync,all_squash) 10.9.134.110/32(rw,sync,all_squash) 10.9.90.103/32(rw,sync,all_squash) 10.19.36.230/32(rw,sync,all_squash) 10.19.63.103/32(rw,sync,all_squash)
# /udisk/elasticsnapshot 为共享的目录, 10.9.121.211/32 为可以挂载此共享目录的IP, 
# 参数说明:
# rw  ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。
# sync  async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘!
# no_root_squash  root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!
# all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦!
# anonuid  anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。

c、配置生效

exportfs -r

d、启动服务

systemctl start rpcbind
systemctl start nfs

第三步:ES结点挂载共享目录

a、与上面同样的方式安装nfs-utils

b、挂载目录

mkdir /mnt/es
mount -t nfs 10.10.10.10:/udisk/elasticsnapshot /mnt/es -o proto=tcp -o nolock

为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议

第四步:ES配置快照仓库

a、在es配置文件elasticsearch.yml中末尾添加一下配置

path.repo: '/mnt/es'

b、重启ES

W1:通过systemctl命令(适用于以包管理工具安装的,或是进行了相关配置的)

systemctl stop elasticsearch
systemctl start elasticsearch

W2:通过Kill ES进程的方式

jps(或者ps -ef 得到进程Pid)
kill -9 {pid}
cd es目录
bin/elasticsearch -d (d是后台启动)

c、创建快照仓库

使用es图形客户端或是其他工具,如egde的Elasticvue插件、postman、kibana

PUT /_snapshot/my_backup   	---注释:my_backup,是仓库名,任意取
{
"type": "fs",
"settings": {
"location": "/mnt/es",
"compress": true, # 是否压缩
"max_snapshot_bytes_per_sec": "50mb",		--- 快照每秒保存的容量,默认40mb
"max_restore_bytes_per_sec": "50mb"			--- 快照每秒恢复的容量,默认40mb
}
}

第五步:快照备份

PUT /_snapshot/my_backup/back-2018-10-26	---注释:my_backup是仓库名。back-2018-10-26是快照名称,任意取。
{
"indices": "*", # * 表示所有index, 可以具体写哪些"logstash-iis-2017-01-07,logstash-httperr-2017-01-07",	
"ignore_unavailable": true,			---注释:是否忽略不能成功的索引快照备份
"include_global_state": false		--- 注释:是否包含全局状态。false不包含,只包含索引数据和元数据
}
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true 
{
...
}
同步等待快照备份完毕,适用于其他异步耗时的API
get _snapshot/my_backup/back-2018-10-26
查看快照信息,包含索引信息即一些相关信息

速率:4.19GB->2min17s

备份完毕后,仓库里会有如下文件。

附:快照迁移

  • elasticsearch一个快照存储库可以有多个快照仓库,一个快照仓库可以有多个快照

  • elasticsearch不提供将一个快照加入另一个仓库的方法,如想加入另一个仓库就需要先将快照恢复再快照至另一个仓库

  • elasticsearch删除快照仓库只会删除这些相关信息,而不会自动删除文件系统上的快照仓库文件,需要手动删除

  • elasticsearch的快照存储库的所有文件组成了一个快照,而不是单单snap-xxx.dat文件

其他

1、查看快照的信息

GET http://127.0.0.1:9200/_snapshot/my_backup/_all 查看所有快照信息
GET http://127.0.0.1:9200/_snapshot/my_backup/snapshot_3/_status 查看具体快照详细信息 

2、快照恢复

post /_snapshot/my_backup/logstash-2017-01-07/_restore

POST http://127.0.0.1:9200/_snapshot/my_backup/snapshot_1/_restore 
{ 
"indices": "index_1", 
"rename_pattern": "index_(.+)", 
"rename_replacement": "restored_index_$1" 
} 

3、查看恢复状态和取消恢复

GET http://127.0.0.1:9200/_recovery/restored_index_3 
GET http://127.0.0.1:9200/_recovery/

取消恢复(不管已经恢复完,或者正在恢复),直接删除索引即可。

posted @ 2024-01-23 11:35  炸天帮达令  阅读(123)  评论(0编辑  收藏  举报