elasticserch的备份与恢复

elasticsearch的备份与恢复可以通过第三方工具elasticdump来实现,但是个人感觉elasticdump备份过程比较慢(可能是我使用方法不当),所以这里研究了一下elasticsearch自带的备份api。下面将操作步骤记录一下

第一步:在配置文件中添加备份的仓库路径

vim /etc/elasticsearch/elasticsearch.yml 
path.repo: ["/data/backup/es_backup"]    #备份目录,根据自己情况进行填写
systemctl restart elasticsearch.service 
mkdir -pv /data/backups/es_backup 
chmod 755 /data/backups/es_backup
chown elasticsearch:elasticsearch /data/backup/es_backup

 

第二步:创建仓库

备份数据之前,要创建一个仓库来保存数据,仓库的类型支持Shared filesystem, Amazon S3, HDFS和Azure Cloud。下面以文件系统为例

curl -H "Content-Type:application/json" -XPUT '127.0.0.1:9200/_snapshot/es_backup' -d '
{
    "type": "fs", 
    "settings": {
        "location": "/data/backup/es_backup" 
    }
}'

 

第三步:备份索引,这里以备份全部索引为例

curl -H "Content-Type:application/json" -XPUT '127.0.0.1:9200/_snapshot/es_backup/snapshot_1'

snapshot_1 是快照名字,可自定义

 

如果想备份指定的索引,添加indices参数

curl -H "Content-Type:application/json" -XPUT '127.0.0.1:9200/_snapshot/es_backup/snapshot_2' -d '
    {
        "indices": "first,second"
    }'

snapshot_2 是另一个快照名字,可自定义

 

第四步:查看备份

curl -H "Content-Type:application/json" -XGET '127.0.0.1:9200/_snapshot/es_backup/snapshot_1?pretty=true'

curl -H "Content-Type:application/json" -XGET '127.0.0.1:9200/_snapshot/es_backup/snapshot_2?pretty=true'

 

snapshot_2的备份信息

{
  "snapshots" : [
    {
      "snapshot" : "snapshot_2",
      "uuid" : "OOvqQTSeQG-p8na507fKGQ",
      "version_id" : 7080099,
      "version" : "7.8.0",
      "indices" : [
        "second",
        "first"
      ],
      "include_global_state" : true,
      "state" : "SUCCESS",
      "start_time" : "2021-08-24T02:28:24.928Z",
      "start_time_in_millis" : 1629772104928,
      "end_time" : "2021-08-24T02:28:24.928Z",
      "end_time_in_millis" : 1629772104928,
      "duration_in_millis" : 0,
      "failures" : [ ],
      "shards" : {
        "total" : 2,
        "failed" : 0,
        "successful" : 2
      }
    }
  ]
}

  

第五步:恢复索引。只要在你希望恢复回集群的快照 ID后面加上 _restore 即可。这里以恢复snapshot_2为例,默认会恢复这个快照里的所有索引,在恢复之前删除原来的索引

curl -H "Content-Type:application/json" -XPOST '127.0.0.1:9200/_snapshot/es_backup/snapshot_2/_restore'

 

如果指向恢复其中一部分索引,可以添加indices参数来控制。这里只恢复first

curl -H "Content-Type:application/json" -XPOST '10.30.150.13:9200/_snapshot/es_backup/snapshot_2/_restore' -d '
{
        "indices":"first"
}'

  

 

整个备份恢复过程完成。 

 

posted @ 2021-08-24 10:25  羊脂玉净瓶  阅读(221)  评论(0)    收藏  举报