前言
生产环境中运行的组件,只要有数据存储,定时备份、灾难恢复是必修课,mysql数据库的备份方案已经非常成熟,Elasticsearch也同样有成熟的数据备份、恢复方案,我们来了解一下。
概要
本篇介绍Elasticsearch生产集群数据的数据备份、恢复和升级的常规操作。
curl命令
curl是Linux操作的必备工具,Elasticsearch生产环境的搭建,不能保证都能使用kibana访问到,而Elasticsearch Restful API都可以使用curl工具来完成访问。
使用curl还有一个好处:有些操作需要一连串的请求才能完成,我们可以使用shell脚本将这些关联的操作,封装到脚本里,后续使用起来就非常方便。
如果有定时执行的命令,也是使用shell将一系列操作封装好,运用Linux自带的crontab进行触发。
后续的一些操作命令,将会用curl来完成,并且只需要将完整的curl请求拷贝到kibana的dev tools上,kibana能够自动转化成我们之前常见的请求,非常方便。
在Linux下的请求命令:
[esuser@elasticsearch02 ~]$ curl -XGET 'http://elasticsearch02:9200/music/children/_search?pretty' -H 'Content-Type: application/json' -d '
{
"query": {
"match_all": {}
}
}
'
完整的命令拷贝到dev tools里时,自动会变成:
GET /music/children/_search
{
"query": {
"match_all": {}
}
}
这工具真是强大,不过反过来操作不行的,我已经试过了。
curl命令,有Body体的,记得加上-H 'Content-Type: application/json',?pretty参数可以让响应结果格式化输出。
数据备份
我们知道Elasticsearch的索引拆分成多个shard进行存储在磁盘里,shard虽然分了primary shard和replica shard,可以保证集群的数据不丢失,数据访问不间断,但如果机房停电导致集群节点全部宕机这种重大事故时,我们就需要提前定期地对数据进行备份,以防万一。
既然是磁盘文件存储,那存储介质的选择就有很多了:本地磁盘,NAS,文件存储服务器(如FastDFS、HDFS等),各种云存储(Amazon S3, 阿里云OSS)等
同样的,Elasticsearch也提供snapshot api命令来完成数据备份操作,可以把集群当前的状态和数据全部存储到一个其他目录上,本地路径或网络路径均可,并且支持增量备份。可以根据数据量来决定备份的执行频率,增量备份的速度还是很快的。
创建备份仓库
我们把仓库地址暂定为本地磁盘的/home/esuser/esbackup目录,
首先,我们需要在elasticsearch.yml配置文件中加上
path.repo: /home/esuser/esbackup
并重启Elasticsearch。
启动成功后,发送创建仓库的请求:
[esuser@elasticsearch02 ~]$ curl -XPUT 'http://elasticsearch02:9200/_snapshot/esbackup?pretty' -H 'Content-Type: application/json' -d '
{
"type": "fs",
"settings": {
"location": "/home/esuser/esbackup",
"max_snapshot_bytes_per_sec" : "50mb",
"max_restore_bytes_per_sec" : "50mb"
}
}
'
{"acknowledged":true}
[esuser@elasticsearch02 ~]$
参数解释:
- type: 仓库的类型名称,请求里都是fs,表示file system。
- location: 仓库的地址,要与
elasticsearch.yml配置文件相同,否则会报错 - max_snapshot_bytes_per_sec: 指定数据从Elasticsearch到仓库(数据备份)的写入速度上限,默认是20mb/s
- max_restore_bytes_per_sec: 指定数据从仓库到Elasticsearch(数据恢复)的写入速度上限,默认也是20mb/s
用于限流的两个参数,需要根据实际的网络进行设置,如果备份目录在同一局域网内,可以设置得大一些,便于加快备份和恢复的速度。
也有查询命令可以看仓库的信息:
[esuser@elasticsearch02 ~]$ curl -XGET 'http://elasticsearch02:9200/_snapshot/esbackup?pretty'
{"esbackup":{"type":"fs","settings":{"location":"/home/esuser/esbackup","max_restore_bytes_per_sec":"50mb","max_snapshot_bytes_per_sec":"50mb"}}}
[esuser@elasticsearch02 ~

最低0.47元/天 解锁文章
49

被折叠的 条评论
为什么被折叠?



