首页 > 其他分享 >基于NFS搭建ES快照仓库

基于NFS搭建ES快照仓库

时间:2024-01-23 11:44:40浏览次数:35  
标签:快照 仓库 backup squash NFS snapshot my 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/

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

标签:快照,仓库,backup,squash,NFS,snapshot,my,ES
From: https://www.cnblogs.com/itdaling/p/17981976

相关文章

  • 【salesforece】进入一个新项目,如何将github上的项目克隆并连接到自己的sf环境
    1.将github上的项目克隆1)在电脑上创建一个空文件夹(文件夹名:a),用来装新项目的代码。2)用vscode打开文件夹a3)打开github环境,并复制想要clone的代码包链接b(这里复制SSH链接)4)在Terminal输入:gitclone 链接b代码clone完成2.连接到自己的sf环境1)Ctrl+Shift+P,新建或选择想要关联的......
  • 别再混淆事件源(Event Sourcing)和消息流(Message Streaming)了!
    0前言Kafka不适合事件溯源,Kafka适合消息流。这两种事物需要不同存储机制。事件溯源(EventSourcing),需DB充当事件日志,为事件溯源存储的事件必须以某种方式编写,以便将来的读取能够快速组装属于单个聚合的较小(更小的)事件流最初发射它们的。这需要随机访问索引消息流(MessageS......
  • OPENJSON requires Compatibility Level 130
    ParseandTransformJSONDatawithOPENJSONOPENJSONrequiresCompatibilityLevel130TheOPENJSONfunctionisavailableonlyundercompatibilitylevel130.Ifyourdatabasecompatibilitylevelislowerthan130,SQLServercan'tfindandruntheO......
  • hivesql报错:java.net.SocketTimeoutException: Read timed out
    场景:在dolphin里面执行hivesql脚本,报错java.net.SocketTimeoutException:Readtimedout解决方式:hive.metastore.client.socket.timeout=1000s 扩展:"Hive报Readtimedout"错误可能也与YARN的资源限制有关。可以通过增加YARN的配置参数来解决此错误。<property><name......
  • 最新作品FreeScript,全功能免费,让Excel/WPS表格可运行主流编程语言及其生态轮子库
    经过几个月的开发,FreeScript终于走向成熟,可以向大众分享,同时视频教程也陆续推出,让大家上手不再是难事。下载地址:https://easyshu.lanzoub.com/b00xsdfvg密码:c0p8下载地址:https://space.bilibili.com/385286336/channel/collectiondetail?sid=2094380目前FreeScript已完成对J......
  • DevExpress WinForms导航控件 - 交付更时尚、体验更好的业务应用(二)
    DevExpressWinForms的SideNavigation(侧边导航)和NavPanel(导航面板)可以帮助客户交付完全可模仿UI体验的业务解决方案,这些体验在当今流行的应用程序中都可找到。在上文中(点击这里回顾>>),我们为大家介绍了DevExpressWinForms导航控件中的折叠组件、导航栏组件等。接下来我们将继续......
  • 记一次unable to find valid certification path to requested target异常排查
    前言最近因为uat环境https过期,后边进行证书续期,发现通过浏览器访问可以正常访问,但是接口调用该地址,却出现unabletofindvalidcertificationpathtorequestedtarget网上的大部分针对java解决方案可以归类如下两种1、在jdk证书库里添加该域名的公钥证书注:该方案比较......
  • Unity 如何基于addressable来做资源管理
    一、什么是Addressable系统Addressable系统是Unity2018.3版本中推出的一种资源管理方案,它可以帮助我们更好地管理游戏中的资源。在以往的游戏开发中,我们通常使用Resources来进行资源加载,但是这种方式存在很多问题,比如加载速度慢、内存占用高等。Addressable系统可以解决这些问题......
  • PostgreSQL安装
    一、下载安装1.1解压https://www.postgresql.org/ftp/source/v10.3/tar‐zxvfpostgresql‐10.3.tar.gz1.2安装依赖#centosyum‐yinstallzlib‐develreadline‐devel#ubuntusudoapt-cachesearchreadlinesudoaptinstalllib64readline8lib64readline-de......
  • 【数据库】对大数据量数据集,PostgreSQL分组统计数量,限定每组最多数量
    一、背景介绍在处理大数据量数据集时,我们经常需要进行分组统计。例如,我们需要统计每个城市的人口数量、每个年龄段的人数等。在PostgreSQL中,我们可以使用row_number()函数结合over(partitionby)子句来实现这个功能。同时,为了限定每组最多数量,我们可以使用row_num<=100......