ElasticSearch维护-备份和恢复

本篇主要学习下ElasticSearch生产中的运维-备份和恢复。


备份:

第一步,创建仓库

其实就是创建一个备份存储的目的仓库,支持FileSystemAmazon S3Azure CloudHDFS

创建命令如下:

PUT _snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/home/docker/back"
  }
}

首先给到我们的一个信息是,命令都是通过http协议进行,所以ES的备份是ES运行时进行的,并不是单纯的系统级的文件拷贝,备份前请先启动ES

命令执行后报错:

"reason": "[my_backup] location [/mount/backups/my_backup] doesn't match any of the locations specified by path.repo because this setting is empty"

翻找资料发现做备份的location fs需要在elasticsearch.yml中配置一下,增加一行:

path.repo: ["/home/docker/back"]

修改配置后重启ES,再运行上面命令,成功。

这里Settings里有几个默认参数需要了解下:

compress,是否压缩,默认为是。

max_restore_bytes_per_sec,节点恢复速率。默认40mb/s

max_snapshot_bytes_per_sec,每个节点快照速率。默认40mb/s

可以用如下命令修改默认参数:

POST _snapshot/my_backup/
{
  "type": "fs",
  "settings": {
    "compress": true,
    "location": "/home/docker/back",
    "max_snapshot_bytes_per_sec" : "50mb",
    "max_restore_bytes_per_sec" : "50mb"
  }
}

仓库创建完毕后,我们去location的位置去看一眼,里面目前还是空的。

 

第二步,备份索引

本质是在刚才的仓库里创建快照,快照可以指定一个或多个索引进行备份,默认是全部索引,同一个仓库可以创建多个快照。

备份过程也分为同步和异步,默认是异步,备份在后台执行,可以通过wait_for_completion=true参数设定为同步。

异步方式备份全部索引

PUT _snapshot/my_backup/snapshot_all
同步方式备份部分索引
PUT _snapshot/my_backup/snapshot_entity?wait_for_completion=true
{
  "indices": "index_entity"
}

这步执行后location下真正增加了快照文件。

 

第三步,查看备份信息

GET _snapshot/my_backup/snapshot_all
返回如下:
{
  "snapshots": [
    {
      "snapshot": "snapshot_all",
      "uuid": "4LWRo_WbR5mzFlZ6ozuDrg",
      "version_id": 5060199,
      "version": "5.6.1",
      "indices": [
        "my_index",
        "applog",
        "index_entity",
        "index1",
        ".kibana"
      ],
      "state": "SUCCESS",
      "start_time": "2017-11-03T02:34:17.832Z",
      "start_time_in_millis": 1509676457832,
      "end_time": "2017-11-03T02:34:18.537Z",
      "end_time_in_millis": 1509676458537,
      "duration_in_millis": 705,
      "failures": [],
      "shards": {
        "total": 21,
        "failed": 0,
        "successful": 21
      }
    }
  ]
}

其实这个跟上面同步备份时的返回是一样的,此命令主要用来查看异步备份执行结果。

 

第四部,删除废弃备份快照

DELETE _snapshot/my_backup/snapshot_applog

 

恢复:

恢复命令比较简单,就是选择一个快照执行_restore就可以了也是默认异步执行,通过wait_for_completion=true可以改成同步执行,如下:

POST _snapshot/my_backup/snapshot_entity/_restore

但执行后报错如下:

reason": "[my_backup:snapshot_entity/hxNnq8CsRAm3Yi8IvD0ZeA] cannot restore index [index_entity] because it's open"

再去寻找资料,发下索引在被回复时需要先关闭,否则索引的写操作会影响恢复,于是关闭索引:

POST index_entity/_close

再执行恢复命令

POST _snapshot/my_backup/snapshot_entity/_restore

成功。恢复好后记得打开索引

POST index_entity/_open

如果要从一个大快照中只恢复部分索引,命令如下:

POST _snapshot/my_backup/snapshot_all/_restore
{
  "indices": "index_entity"
}













你可能感兴趣的:(ElasticSearch)