在ElasticSearch里面备份策略已经比较成熟了
目前在ES5.x中备份支持的存储方式有如下几种:
````
fs //本地挂载的盘
url //网络协议存储支持http,https,ftp
repository-s3 //亚马逊
repository-hdfs //HDFS
repository-azure //微软
repository-gcs //google
````
在这里我们主要介绍如何备份索引数据到HDFS上。
首先,我们先从名词概念上理解下备份相关术语:
(1)Repositories (仓库)
在一个es集群内,想要备份数据,首先要创建一个仓库,用来存储快照,一个集群可以创建多个仓库。
(2)Snapshot (快照)
有了仓库之后,我们就可以创建快照了,创建快照时,必须要选择一个指定的仓库才能创建。每个快照里面可以包含多个索引,默认的话是备份整个集群的索引。当然我们也可以指定备份我们认为重要的索引的数据。
(3)Restore (恢复)
备份完成之后数据也就是快照的还原称为恢复
ok,理解了上面三个概念之后,下面我们看下具体怎么操作,本次主要介绍
主要涉及两个ES版本:
ElasticSearch2.3.4
ElasticSearch5.6.4
(一)在ElasticSearch2.x中如何备份索引数据
(1)在每台节点上安装repository-hdfs插件
````
bin/plugin install elasticsearch/elasticsearch-repository-hdfs/2.2.0
````
(2)修改每台节点上的config/elasticsearch.yml文件,添加下面的属性
````
security.manager.enabled: false
````
(3)重启整个集群
(4)构建一个仓库
````
PUT /_snapshot/my_backup
{
"type": "hdfs",
"settings": {
"path": "/back/es/",
"load_defaults": "true",
"compress": "true",
"uri": "hdfs://192.168.10.160:8020"
}
}
````
查看仓库信息:
````
//查看指定的仓库
GET /_snapshot/my_backup
//下面当前所有的仓库信息s
GET /_snapshot
GET /_snapshot/_all
````
删除一个仓库:
````
DELETE /_snapshot/my_backup
````
注意删除之后,只是ES里面的引用删除,HDFS上备份的文件是不会删除的
(5)构建一个快照
````
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
{
"indices": "index_1,index_2",//注意不设置这个属性,默认是备份所有
"ignore_unavailable": true,
"include_global_state": false
}
````
查询快照的几个方式:
````
GET /_snapshot/my_backup/snapshot_1 //查询指定快照
GET /_snapshot/my_backup/snapshot_*,some_other_snapshot //支持通配符查询
GET /_snapshot/my_backup/_all //查询所有的快照
````
删除一个快照:
````
DELETE /_snapshot/my_backup/snapshot_1
````
注意删除之后,只是ES里面的引用删除,HDFS上备份的文件是不会删除的
(6)恢复快照
````
POST /_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1,index_2", //指定索引恢复,不指定就是所有
"ignore_unavailable": true,//忽略恢复时异常索引
"include_global_state": false,//是否存储全局转态信息,fasle代表有一个或几个失败,不会导致整个任务失败
"rename_pattern": "index_(.+)",//是否需要重命名索引
"rename_replacement": "restored_index_$1"//替换后的索引名
}
````
(二)在ElasticSearch5.x中如何备份索引数据
ElasticSearch5.x的备份方法和ElasticSearch2.x大同小异,这里仅介绍他们不同的地方。
首先es5要求必须是JDK8的版本,如果你的系统有多个jdk的版本,而且你不想改变现有的jdk版本,那么你就要,单独在下面的两个脚本中声明JDK:
````
vi bin/elasticsearch
vi bin/elasticsearch-plugin
````
里面分别添加下面的jdk指定版本:
````
export JAVA_HOME=/usr/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
````
然后在每台节点上安装备份的插件:
````
bin/elasticsearch-plugin install repository-hdfs
````
完事之后,直接重启集群即可,注意ElasticSearch5.x不需要再修改elasticsearch.yml文件。
用法和Elasticsearch2.x是一样的,这里不再重述。
最后再补充一下:
es1.x的备份的索引是可以直接在es2.x中恢复的
es2.x的备份的索引是可以直接在es5.x中恢复的
但是,es1.x的的索引数据是不能直接在es5.x中使用的。
兼容的索引只能跨一个主要版本
总结:
本文主要介绍了在Elasticsearch2.x和5.x的版本中,如何给索引数据备份及恢复,并叙述了2.x和5.x版本他们的不同之处,数据备份是生产环境非常重要的一个环节,有了备份我们才可以更加从容的面对一些突发的线上故障。
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
- **快照与恢复**:利用 Elasticsearch 的 Snapshot and Restore API 创建索引快照,并将其保存至远程存储系统(如 Amazon S3、HDFS 等)。 - **数据复制**:通过副本分片机制实现实时数据冗余,提高数据可靠性。 - ...
- **数据导入导出**:它允许用户将Hadoop的数据源(如HDFS、HBase、Spark等)直接导入到Elasticsearch,反之亦然,方便进行数据分析和检索。 - **MapReduce支持**:它提供了MapReduce作业的输入/输出格式,使Elastic...
综上所述,基于 HDFS、ElasticSearch、Spark 和 TensorFlow 的文本分析中台基础架构能够有效地处理和分析大规模文本数据,不仅提高了数据处理的效率,也为各种应用场景提供了灵活多样的技术支持。随着技术的不断进步...
ELK(Elasticsearch, Logstash, Kibana)栈是大数据分析的流行组合,其中Logstash负责收集和预处理各种日志数据,Elasticsearch进行存储和索引,而Kibana则提供了一个交互式的Web界面,用于数据可视化和查询。...
3. 数据流处理:ES-Hadoop支持Kafka等流式处理工具的数据流直接导入到Elasticsearch中,这对于需要实时处理和分析的数据流来说非常有用。 4. 扩展性和高可用性:Elasticsearch是一个分布式系统,可以水平扩展,而...
1. **数据导入**:通过Hadoop MapReduce作业,将HDFS上的数据批量导入到Elasticsearch索引,这在大数据量的索引构建中非常有用。 2. **实时分析**:Hadoop可以读取Elasticsearch中的数据进行批处理分析,然后将结果...
6. **数据迁移和同步**:Elasticsearch-Hadoop支持将HDFS上的数据批量导入到Elasticsearch,或者将Elasticsearch中的数据导出到HDFS,方便进行数据备份、迁移和同步。 7. **容错性和扩展性**:由于Elasticsearch和...
Elasticsearch的备份可以通过设置共享目录(如nfs共享或samba共享),添加配置项path.repo,注册备份,并建立快照来备份数据。一旦需要,还可以从备份中恢复数据。 总而言之,Elasticsearch和Hbase的结合可以充分...
11. **数据备份与恢复**:使用`elasticdump`或`elasticsearch-repository-hdfs`等工具,可以方便地对Elasticsearch数据进行备份和恢复,保障数据安全。 12. **版本升级**:从旧版本升级到8.5.3时,应遵循官方升级...
在将Hive中的数据导入到Elasticsearch时,如果Hive表中存在一个表示地理坐标的字段(如`location`),且该字段的类型为`array<double>`,那么直接导入到Elasticsearch后可能会导致该坐标数据无法正常被识别和使用。...
整体来看,文档内容涉及到了如何在实际应用场景中使用Spark Streaming将数据实时或近实时地推送到Elasticsearch,并在此基础上对数据进行复杂的查询和分析。它详细描述了集成架构、数据管道构建、数据查询优化,以及...
Elasticsearch的数据模型是基于文档的,每个文档属于一个索引(Index),索引由一个或多个类型(Type)组成,虽然在较新版本中,Type已经被废弃,但概念仍然存在。每个文档都有一个唯一的ID,通过映射(Mapping)...
综上所述,Elasticsearch-Hadoop 5.2.1是一个强大的工具,它连接了Hadoop生态系统和Elasticsearch,实现了大数据处理和实时搜索分析的完美融合。无论是数据科学家还是开发人员,都可以从中受益,提升数据处理和分析...
River 模块在 ES2.0 之后应该是被取消了,它的意思表示是第三方插件,例如可以通过一些自定义的脚本将传统的数据库(MySQL)等数据源通过格式化转换后直接同步到 ES 集群里,这个 river 大部分是自己写的,写出来的...
- **Solr** 技术相对较早(始于2006年),社区活跃度较高,而 **ElasticSearch** 则是在2010年推出,由单一开发者发展到公司支持,社区也在逐渐壮大。 3. **数据格式支持**: - **Solr** 支持多种格式的数据导入,而...
5. **Elasticsearch-Hadoop**:集成Hadoop,支持从HDFS、Hive、Pig等导入数据。 ### 六、集群运维 1. **监控**:使用内置的监控工具或Kibana可视化集群状态、节点性能等。 2. **节点角色**:主节点负责集群管理和...
在Elasticsearch中,数据按逻辑分组到不同的索引中。 **Type(类型):** 类似于关系型数据库中的“表”。在每个索引下,可以定义不同类型的数据,尽管从Elasticsearch 6.x版本开始,每个索引仅能有一种类型。 **...
Kettle与Elasticsearch的结合,使得用户可以轻松地从各种数据源抽取数据并导入到Elasticsearch索引中,或者从Elasticsearch中导出数据进行进一步的处理和分析。这些插件可能包括了用于连接Elasticsearch的Step,如...
- **类型less索引**:在Elasticsearch 6中,每个索引只有一个类型,简化了数据结构。 ### 7. 性能优化 - **索引优化**:包括合并策略、刷新间隔、分片大小等。 - **搜索性能**:优化搜索请求,如使用缓存、提高...
综上所述,Elasticsearch-admin是一个强大的Elasticsearch管理工具,覆盖了从集群到索引、分片的全面管理功能,结合了SymfonyPHP和Bootstrap的优势,为用户提供了高效、直观的Web界面,大大提升了Elasticsearch运维...