Elastcisearch数据备份与恢复¶
一、简介¶
由于磁盘空间有限,需要对Elasticsearch(6.x)里存储的数据进行冷备份。1. 对指定的索引进行备份,保存后可以方便以后查历史数据;2. 处理掉过期数据,节省磁盘空间。
二、配置S3存储¶
2.1 Elasticsearch S3插件安装¶
./elasticsearch-plugin install repository-s3
# ES集群里面所有节点都要安装repository-s3插件
集群需要在每个节点上执行这个命令,重启后使用命令验证
./elasticsearch-plugin list
2.2 配置Elasticsearch连接S3¶
备份的过期数据传输到对象存储S3,参考官方文档:
由于自建的Elasticsearch集群在华为云上,配置使用华为的OBS存储ES备份
2.2.1 设置S3连接客户端
# 创建自己的AK/SK -- Elasticsearch keystore(默认)
bin/elasticsearch-keystore add s3.client.default.access_key
bin/elasticsearch-keystore add s3.client.default.secret_key
# 多bucket情况下,配置不同的对象存储对应的AK/SK
bin/elasticsearch-keystore add s3.client.hwobs.access_key
bin/elasticsearch-keystore add s3.client.hwobs.secret_key
# 查看自己的keystore
bin/elasticsearch-keystore list
2.2.2 加载配置
# Kibana->Dev Tools
POST _nodes/reload_secure_settings
2.2.3 配置华为OBS作为Repository
# config/jvm.options 增加
-Des.allow_insecure_settings=true
curl -X PUT "localhost:9200/_snapshot/my_s3_repository" -H 'Content-Type: application/json' -d '
{
"type": "s3",
"settings": {
"client": "hwobs",
"bucket": "mysql-backup",
"endpoint": "obs.cn-east-2.myhuaweicloud.com",
"access_key": "AK",
"secret_key": "SK"
}
}
'
2.2.4 触发ES进行快照备份(归档)
# 备份指定index
curl -XPUT 'http://localhost:9200/_snapshot/my_s3_repository/zhongzhuan_0411' -d '{"indices": "zhongzhuan-2019.04.11"}?wait_for_completion=true' -H 'Content-Type: application/json'
# 查看快照情况 Kibana-> Tools
GET _snapshot/my_s3_repository/zhongzhuan_0411
# "state" : "SUCCESS" 快照执行状态
2.2.5 恢复指定快照
# 先删除需要恢复的index,再进行恢复
curl -XPOST 'http://localhost:9200/_snapshot/my_s3_repository/zhongzhuan_0411/_restore' -d '{"indices": "zhongzhuan-2019.04.11"}?wait_for_completion=true' -H 'Content-Type: application/json'
# 查看快照恢复情况 Kibana-> Tools
GET zhongzhuan-2019.04.11/_recovery
ES快照备份过程中,需要等状态变更为”SUCCESS”才可以进行其他快照相关操作
快照恢复根据数据量大小,会有一定的等待时间
Kibana->Management->Index management 中现实index的存储等详细信息,才可以在Kibana查询
三、配置本地硬盘存储¶
3.1 Elasticsearch的配置¶
# elasticsearch.yml
# /esbackups目录权限是ES启动用户
path.repo: ["/esbackups"]
3.2 创建snapshot存储路径¶
# Kibana->Dev Tools
PUT /_snapshot/imservice_backup
{
"type": "fs",
"settings": {
"location": "/esbackups"
}
}
3.3 备份指定index的快照¶
curl -XPUT 'http://localhost:9200/_snapshot/hxapi_backup/snap_01' -d '{"indices": "hxapi-2019.03.21"}?wait_for_completion=true' -H 'Content-Type: application/json'
3.4 恢复指定index的快照¶
curl -XPOST 'http://localhost:9200/_snapshot/hxapi_backup/snap_02/_restore' -d '{"indices": "hxapi-2019.03.29"}?wait_for_completion=true' -H 'Content-Type: application/json'
3.5 删除备份中指定index的快照¶
curl -XDELETE http://127.0.0.1:9200/_snapshot/hxapi_backup/snap_01
四、 清理过期数据¶
# 删除Elasticsearch中指定index(可用正则)
curl -XDELETE "http://127.0.0.1:9200/imserivce-2019.04.11"
# 删除快照仓库中指定快照
curl -XDELETE http://127.0.0.1:9200/_snapshot/my_s3_repository/zhongzhuan_0411