每个人使用elasticsearch的起点不一样,遇到的问题也参差不齐。
一开始elasticsearch不是我安装,配置信息如下:

cluster.name: dzm_dev
node.name: node-185
network.host: 192.168.5.185
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.5.185","192.168.5.186", "192.168.5.187"]

如果我想备份,那么我先需要在elasticsearch.yml中添加一行配置path.repo: [“/usr/hadoop/application/el_bak”]这个’/usr/hadoop/application/el_bak’就是备份文件的路径,根据自己需要指定,不过一定要注意用户权限。在权限内,这个文件夹会自动创建。
配置好后,先删掉elasticsearch进程,然后再启动elasticsearch。

/usr/hadoop/application/elasticsearch/bin/elasticsearch -d
#日志
tail -fn 100 /usr/hadoop/application/elasticsearch/logs/dzm_dev.log

还有一点需要注意,因为discovery.zen.ping.unicast.hosts: ["192.168.5.185","192.168.5.186", "192.168.5.187"]这里面的其他机器也都需要加上path.repo的配置,否则创建仓库的时候,会提示下面的错误

org.elasticsearch.transport.RemoteTransportException: [node-187][192.168.5.187:9300][cluster:admin/repository/put]
Caused by: org.elasticsearch.repositories.RepositoryException: [el_back] failed to create repositoryat org.elasticsearch.repositories.RepositoriesService.createRepository(RepositoriesService.java:388) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.repositories.RepositoriesService.registerRepository(RepositoriesService.java:356) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.repositories.RepositoriesService.access$100(RepositoriesService.java:56) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.repositories.RepositoriesService$1.execute(RepositoriesService.java:109) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:45) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.cluster.service.ClusterService.executeTasks(ClusterService.java:634) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.cluster.service.ClusterService.calculateTaskOutputs(ClusterService.java:612) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.cluster.service.ClusterService.runTasks(ClusterService.java:571) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.cluster.service.ClusterService$ClusterServiceTaskBatcher.run(ClusterService.java:263) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:247) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:210) ~[elasticsearch-5.5.0.jar:5.5.0]

当我把185,186,187三台机器都配置好后,创建操作,结果提示下面的错误

[2018-01-05T10:24:34,860][WARN ][o.e.r.VerifyNodeRepositoryAction] [node-185] [el_back] failed to verify repository
org.elasticsearch.repositories.RepositoryVerificationException: [el_back] a file written by master to the store [/usr/hadoop/application/el_bak] cannot be accessed on the node [{node-185}{yyAyGv1mQcKEsGDVMa84ZQ}{E5jcL1_5R3CBSzhrwJQ8mQ}{192.168.5.185}{192.168.5.185:9300}]. This might indicate that the store [/usr/hadoop/application/el_bak] is not shared between this node and the master node or that permissions on the store don't allow reading files written by the master nodeat org.elasticsearch.repositories.blobstore.BlobStoreRepository.verify(BlobStoreRepository.java:1025) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.repositories.VerifyNodeRepositoryAction.doVerify(VerifyNodeRepositoryAction.java:117) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.repositories.VerifyNodeRepositoryAction.access$300(VerifyNodeRepositoryAction.java:50) ~[elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.repositories.VerifyNodeRepositoryAction$VerifyNodeRepositoryRequestHandler.messageReceived(VerifyNodeRepositoryAction.java:153) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.repositories.VerifyNodeRepositoryAction$VerifyNodeRepositoryRequestHandler.messageReceived(VerifyNodeRepositoryAction.java:148) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.transport.TcpTransport$RequestHandler.doRun(TcpTransport.java:1544) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.common.util.concurrent.EsExecutors$1.execute(EsExecutors.java:110) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.transport.TcpTransport.handleRequest(TcpTransport.java:1501) [elasticsearch-5.5.0.jar:5.5.0]at org.elasticsearch.transport.TcpTransport.messageReceived(TcpTransport.java:1385) [elasticsearch-5.5.0.jar:5.5.0]

在elasticsearch5使用snapshot接口备份索引我找到了答案,我的elasticsearch集群需要配置共享.
1 采用nfs挂载
参考Linux—centos安装配置并挂载NFS
注意vim /etc/exports,内容如下,其中/usr/hadoop/application/el_bak是挂载的目录,括号里面是对权限进行设置。

/usr/hadoop/application/el_bak *(rw,sync,no_root_squash)

下面是centos6下面的操作,
如果没有安装nfs,可以通过yum -y install nfs-utils rpcbind,参考
Linux—centos安装配置并挂载NFS

185服务端
/etc/init.d/nfs status
/etc/init.d/rpcbind status
# 未启动服务的要先启动服务
/etc/init.d/nfs start
/etc/init.d/rpcbind start
#编辑配置文件
vi /etc/exports
/usr/hadoop/application/el_bak *(rw,sync,no_root_squash)
186客户端
/etc/init.d/rpcbind status
# 未启动服务的要先启动服务
/etc/init.d/rpcbind start
#挂载
showmount -e 192.168.5.185
mount -t nfs 192.168.5.185
:/usr/hadoop/application/el_bak /usr/hadoop/application/el_bak
#卸载
umount /usr/hadoop/application/el_bak

在centos7下面nfs有所区别,通过yum install -y nfs-utils进行安装,参考Centos7安装配置NFS服务和挂载

#在master节点上执行
#先为rpcbind和nfs做开机启动:(必须先启动rpcbind服务)
systemctl enable rpcbind.service
systemctl enable nfs-server.service
#然后分别启动rpcbind和nfs服务:
systemctl start rpcbind.service
systemctl start nfs-server.service
#确认NFS服务器启动成功:
rpcinfo -p
# 使配置生效
exportfs -r
# 查看配置情况
exportfs
#在slave节点,不需要启动nfs服务systemctl enable rpcbind.servicesystemctl start rpcbind.serviceshowmount -e 192.168.5.185 mount -t nfs 192.168.5.185 :/application/el_bak /application/el_bak

2 采用sshfs挂载
参考ElasticSearch集群数据迁移备份方案
3 快照仓库操作REST接口
删除仓库

DELETE http://192.168.5.185:9200/_snapshot/my_backup

创建仓库

curl -XPUT 'http://192.168.5.185:9200/_snapshot/el_bak' -d '{"type": "fs","settings": {"location":"/usr/hadoop/application/el_bak","max_snapshot_bytes_per_sec" : "50mb", "max_restore_bytes_per_sec" :"50mb","compress":true}}'

创建的时候出现了下面的错误

{"error":{"root_cause":[{"type":"repository_verification_exception","reason":"[el_bak] [[yyAyGv1mQcKEsGDVMa84ZQ, 'RemoteTransportException[[node-185][192.168.5.185:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[el_bak] store location [/usr/hadoop/application/el_bak] is not accessible on the node [{node-185}{yyAyGv1mQcKEsGDVMa84ZQ}{1yS2vGSXQjSRYjraptiIcw}{192.168.5.185}{192.168.5.185:9300}]]; nested: AccessDeniedException[/usr/hadoop/application/el_bak/tests-km6E2_MpQ2aE4REyClbPTg/data-yyAyGv1mQcKEsGDVMa84ZQ.dat];'], [QjyiZHI8R1SnJfue-7x6Bg, 'RemoteTransportException[[node-187][192.168.5.187:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[el_bak] store location [/usr/hadoop/application/el_bak] is not accessible on the node [{node-187}{QjyiZHI8R1SnJfue-7x6Bg}{cLXcXL7XR16WokqHnwZ14g}{192.168.5.187}{192.168.5.187:9300}]]; nested: AccessDeniedException[/usr/hadoop/application/el_bak/tests-km6E2_MpQ2aE4REyClbPTg/data-QjyiZHI8R1SnJfue-7x6Bg.dat];']]"}],"type":"repository_verification_exception","reason":"[el_bak] [[yyAyGv1mQcKEsGDVMa84ZQ, 'RemoteTransportException[[node-185][192.168.5.185:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[el_bak] store location [/usr/hadoop/application/el_bak] is not accessible on the node [{node-185}{yyAyGv1mQcKEsGDVMa84ZQ}{1yS2vGSXQjSRYjraptiIcw}{192.168.5.185}{192.168.5.185:9300}]]; nested: AccessDeniedException[/usr/hadoop/application/el_bak/tests-km6E2_MpQ2aE4REyClbPTg/data-yyAyGv1mQcKEsGDVMa84ZQ.dat];'], [QjyiZHI8R1SnJfue-7x6Bg, 'RemoteTransportException[[node-187][192.168.5.187:9300][internal:admin/repository/verify]]; nested: RepositoryVerificationException[[el_bak] store location [/usr/hadoop/application/el_bak] is not accessible on the node [{node-187}{QjyiZHI8R1SnJfue-7x6Bg}{cLXcXL7XR16WokqHnwZ14g}{192.168.5.187}{192.168.5.187:9300}]]; nested: AccessDeniedException[/usr/hadoop/application/el_bak/tests-km6E2_MpQ2aE4REyClbPTg/data-QjyiZHI8R1SnJfue-7x6Bg.dat];']]"},"status":500}

但是有可以查询到,很是奇怪了

跟踪el_bak文件的权限,可以看到el_bak所属用户居然会自己变,很有意思。


通过cat /etc/passwd命令查看到三台机器的hadoop用户名对应的id不一致,所以造成了上面的情况。


这个问题比较隐蔽,先将对用户下面的进程全部关闭掉,然后更改\etc\password中的pid为相同的,重启elasticsearch在执行就ok了。

 curl -XPUT 'http://192.168.5.185:9200/_snapshot/el_bak' -d '{"type": "fs","settings": {"location":"/usr/hadoop/application/el_bak","max_snapshot_bytes_per_sec" : "50mb", "max_restore_bytes_per_sec" :"50mb","compress":true}}'

4 针对索引创建备份

5 备份还原

POST http://192.168.5.185:9200/_snapshot/el_bak/20180109_3/_restore

6 删除type,然后想还原索引带来的问题

这个时候如果执行版本恢复,则提示下面的错误

{"error": {"root_cause": [{"type": "snapshot_restore_exception","reason": "[el_bak:20180109_3/W8DWSBr1TXOX3tDwUocTjQ] cannot restore index [xxxinfo] because it's open"}],"type": "snapshot_restore_exception","reason": "[el_bak:20180109_3/W8DWSBr1TXOX3tDwUocTjQ] cannot restore index [xxxinfo] because it's open"},"status": 500
}

看来需要删掉索引,然后通过索引恢复才是正确的
我在生产环境中执行,在备份时还出现这样的问题,不得不再搜索资料。那是因为仓库没有创建

{"error": {"root_cause": [{"type": "repository_missing_exception","reason": "[el_bak] missing"}],"type": "repository_missing_exception","reason": "[el_bak] missing"},"status": 404
}

7 elasticdump
elasticsearch迁移工具–elasticdump的使用

nohup elasticdump \--input=http://elastic:test@172.19.1.153:9200/test \--searchBody='{"query": {"range": {"createdate": {"lte": "2020-07-20 23:59:59"}}}}' \--output=/appdata/test_bak_20200720.json \--limit=2000 \--type=data &

如果只想获取部分字段,则参考

nohup elasticdump --input=http://elastic:password@172.19.11.153:9200/test  --output=test.json --sourceOnly --searchBody='
{"query": {"bool": {"must": [{"match_phrase": {"xhdwsbh": "11111"}},{"range": {"kprq": {"gte": "20191105","lte": "20191106"}}}]}} ,"_source": ["fplxdm","fpdm","fphm","fpzt","kprq","xhdwsbh","xhdwmc","xhdwdzdh","xhdwyhzh","ghdwsbh","ghdwmc","ghdwdzdh","ghdwyhzh","hsslbs","zhsl","hjje","hjse","jshj","bz","zyspmc"]
}' &

直接从一台机器到另外一台机器,要求版本一直

elasticdump \
--input=http://elastic:密码@10.101.10.58:9200/5nfo \
--output=http://elastic:密码@10.101.10.55:9200/5info \
--type=data --searchBody '{"query":{"match_all": {}}}'

第1.5 章 elasticsearch备份过程记录相关推荐

  1. DreamFactory 第7章 限制和记录API请求

    DreamFactory 第7章 限制和记录API请求 在本章中,您将学习如何使用DreamFactory的API限制和日志记录功能来分配和监视对受限API的访问. 记录 无论您是调试API工作流还是 ...

  2. 第1.7章 elasticsearch线上问题集1

    我的es数据规模为5433万,这个时候频繁执行查询.写入的操作,发现python执行有一些异常,记录下来,看看有没有解决的办法 我的脚本 from elasticsearch import Elast ...

  3. 第三章 Elasticsearch Query DSL -- 查询

    第三章 Elasticsearch Query DSL -- 查询 摘要 查询和过滤的上下文(context) 相关性得分 查询上下文 过滤上下文 示例(下面这些查询参数,后续会详述) 全文查询 in ...

  4. Elasticsearch学习记录

    Elastic Stack介绍 https://blog.csdn.net/xb_workspace/article/details/85165070 什么是Elasticsearch 分布式高性能高 ...

  5. Xtrabackup 安装以及 mysql 使用 Xtrabackup 物理备份过程记录

    一.环境: Linux:CentOS Linux release 7.5.1804 (Core) Mysql:5.7.20 Xtrabackup:2.4.9 linux查看版本当前操作系统发行信息 c ...

  6. 重学Elasticsearch第1章 : Elasticsearch, Kibana概念、Elasticsearch相关术语

    文章目录 Elastic Stack 是什么 ElasticSearch 概念 什么是RestFul 什么是全文检索 什么是Elasticsearch ES的应用场景 安装Elasticsearch ...

  7. 第1.4章 elasticsearch删除字段

    es因为文档存储,所以一旦字段确立,想要更改就不是那么件容易的事情,网上找到很多的例子,有很多只是说了一半. 比如这篇文章里面的elasticsearch mapping 添加 编辑 删除字段,他说要 ...

  8. elasticsearch漫步走 - 第三章 - Elasticsearch的半生缘皮肤Kibana

    Elasticsearch的半生缘皮肤Kibana Kibana的中文网地址 最简单的安装方式 文件下载 文件上传解压 kibana配置 启动kibana 关闭kibana 还有一些重要配置 遇到过一 ...

  9. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  10. 2021-12-23 统计学-基于R(第四版)第十一章课后习题记录及总结

    先声明,本博客为个人作业不一定为标准答案,仅供参考 11.1 题目如下 (1) m=5和m=10的平滑结果: > example11_1<-read.csv("D:/作业/统计学 ...

最新文章

  1. Educational Codeforces Round 77 (Rated for Div. 2)A~C[数学场]
  2. 计算机网络技能专项训练一:基础配置
  3. LODOP提示、报错、现象,简短问答
  4. 中国民办教育市场需求与运营策略建议报告2022版
  5. VVC为什么首先在印度落地?
  6. vue ui 创建项目 ,添加样式时报错,通过vue ui安装less-loader 和less 依赖后报错,百度告诉说版本太高导致
  7. ASP.NET页面的字符编码设置
  8. 时钟同步及其应用(接上一篇)
  9. (JAVA)线程之lock和死锁(例)
  10. VS Code的相对路径问题 (No such file or directory: './lenna.png')
  11. 利尔达芯智行智能BMS系统方案,让电池的“大脑”更聪明
  12. maltab datenum函数与正则表达式巧用:逐日数据转为逐月数据、日序转月序
  13. JavaScript基础语法
  14. 【人工大猩猩部队优化算法】基于人工大猩猩部队优化算法求解单目标优化问题(GTO)含Matlab源码
  15. 二手闲鱼源码 php 如何搭建
  16. HDU 4379 - The More The Better
  17. 如何在众多快递物流中筛选出代收的单号
  18. 广西大学计算机学院导师张振荣,广西大学硕士研究生导师简介-张振荣
  19. 附件四:攻击方评分标准.docx
  20. ​LaTex2023 软件下载+TeXstudio编辑器最新版+保姆级安装教程

热门文章

  1. 【算法:leetcode】双指针:142. 环形链表 II 633. 平方数之和
  2. 矩阵相乘c语言代码用指针实现,矩阵相乘C语言实现
  3. Arcgis栅格数据转至GMT支持的.grd格式绘图
  4. 用户帐户控制---为了对电脑进行保护,已经阻止此应用。---管理员已阻止你运行此应。有关详细信息,请与管理员联系。
  5. python报IndentationError: unexpected indent的解决方法.
  6. Android仿微信语音聊天功能
  7. 奥城大学计算机专业,双录取的美国研究生大学有哪些?哪些专业被允许?
  8. java swing 常见错误和使用
  9. 时隔两年之后,证监会官网再次更新瑞丰银行的IPO进度。
  10. @repository注解