elasticsearch数据复制与恢复
来源:互联网 发布:医疗器械软件关税 编辑:程序博客网 时间:2024/05/22 06:45
分片(Shard)以及副本(Replica) 分布式存储系统为了解决单机容量以及容灾的问题,都需要有分片以及副本机制。Elasticsearch 没有采用节点级别的主从复制,而是基于分片。它当前还未提供分片切分(shard-splitting)的机制,只能创建索引的时候静态设置。
(elasticsearch 官方博客的图片)
比如上图所示,开始设置为5个分片,在单个节点上,后来扩容到5个节点,每个节点有一个分片。如果继续扩容,是不能自动切分进行数据迁移的。官方文档的说法是分片切分成本和重新索引的成本差不多,所以建议干脆通过接口重新索引。
Elasticsearch 的分片默认是基于id 哈希的,id可以用户指定,也可以自动生成。但这个可以通过参数(routing)或者在mapping配置中修改。当前版本默认的哈希算法是MurmurHash3。
Elasticsearch 禁止同一个分片的主分片和副本分片在同一个节点上,所以如果是一个节点的集群是不能有副本的。
恢复以及容灾
分布式系统的一个要求就是要保证高可用。前面描述的退出流程是节点主动退出的场景,但如果是故障导致节点挂掉,Elasticsearch 就会主动allocation。但如果节点丢失后立刻allocation,稍后节点恢复又立刻加入,会造成浪费。Elasticsearch的恢复流程大致如下:
- 集群中的某个节点丢失网络连接
- master提升该节点上的所有主分片的在其他节点上的副本为主分片
- cluster集群状态变为 yellow ,因为副本数不够
- 等待一个超时设置的时间,如果丢失节点回来就可以立即恢复(默认为1分钟,通过 index.unassigned.node_left.delayed_timeout 设置)。如果该分片已经有写入,则通过translog进行增量同步数据。
- 否则将副本分配给其他节点,开始同步数据。
但如果该节点上的分片没有副本,则无法恢复,集群状态会变为red,表示可能要丢失该分片的数据了。
分布式集群的另外一个问题就是集群整个重启后可能导致不预期的分片重新分配(部分节点没有启动完成的时候,集群以为节点丢失),浪费带宽。所以 Elasticsearch 通过以下静态配置(不能通过API修改)控制整个流程,以10个节点的集群为例:
- gateway.recover_after_nodes: 8
- gateway.expected_nodes: 10
- gateway.recover_after_time: 5m
比如10个节点的集群,按照上面的规则配置,当集群重启后,首先系统等待 minimum_master_nodes(6)个节点加入才会选出master, recovery操作是在 master节点上进行的,由于我们设置了 recover_after_nodes(8),系统会继续等待到8个节点加入, 才开始进行recovery。当开始recovery的时候,如果发现集群中的节点数小于expected_nodes,也就是还有部分节点未加入,于是开始recover_after_time 倒计时(如果节点数达到expected_nodes则立刻进行 recovery),5分钟后,如果剩余的节点依然没有加入,则会进行数据recovery。
阅读全文
0 0
- elasticsearch数据复制与恢复
- ElasticSearch数据备份与恢复
- elasticsearch数据备份与还原恢复
- elasticsearch 索引复制 数据
- elasticsearch 备份 与 恢复
- elasticsearch 快照与恢复
- Elasticsearch 备份与恢复,独一无二
- Mysql 主从复制+数据恢复
- MySQL数据库复制与恢复
- Elasticsearch集群的备份与恢复
- Redis基础学习--持久化(数据备份与恢复)、复制、安全、通信协议、管理工具
- Elasticsearch数据迁移与备份
- dd转换和复制,数据恢复等。
- redis主从复制 和一些数据恢复
- 数据备份与恢复
- Elasticsearch 5.x 生产数据的灾备和恢复
- ElasticSearch学习8_在elasticsearch.yml中设置gateway.expected_nodes控制集群数据恢复
- mysql数据备份与恢复
- Freertos学习--3
- sudo:/usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
- 电脑开机后无法启动出现的0xc0000428错误
- eclipse中SVN分支合并到主干
- cxf简介及简单案例
- elasticsearch数据复制与恢复
- Toast的几种类型
- 精华 | 12个关键词告诉你告诉你什么是机器学习(基础篇)
- lightoj1010 Knights in Chessboard(找规律)
- Nodejs入门实战
- [Leetcode] 192. Word Frequency
- SSH无密码登录
- lwj_C#_集合的使用、接口方法的实现;
- ESP8266--MQTT--ESP_MQTT固件开发笔记(一**)小黄板--下载最新的固件