es备份

快照备份

创建仓库

PUT _snapshot/my_backup 
{
    "type": "fs", 
    "settings": {
        "location": "/mount/backups/my_backup" 
    }
}
  • 1、给我们的仓库取一个名字my_backup。
  • 2、我们指定仓库的类型应该是一个共享文件系统。比如nfs共享,挂载在/mount/backups/my_backup
  • 3、最后,我们提供一个已挂载的设备作为目的地址。
  • 4、其他的配置
    max_snapshot_bytes_per_sec
    当快照数据进入仓库时,这个参数控制这个过程的限流情况。默认是每秒 20mb 。
    max_restore_bytes_per_sec
    当从仓库恢复数据时,这个参数控制什么时候恢复过程会被限流以保障你的网络不会被占满。默认是每秒 20mb。
    POST _snapshot/my_backup/ 
    {
        "type": "fs",
        "settings": {
            "location": "/mount/backups/my_backup",
            "max_snapshot_bytes_per_sec" : "50mb", 
            "max_restore_bytes_per_sec" : "50mb"
        }
    }
    注意我们用的是 POST 而不是 PUT 。这会更新已有仓库的设置。
    然后添加我们的新设置。

快照所有打开的索引

PUT _snapshot/my_backup/snapshot_1

份所有打开的索引到 my_backup 仓库下 snapshot_1 的快照里

快照指定索引

这个快照命令现在只会备份 index1 和 index2 了。

PUT _snapshot/my_backup/snapshot_2
{
    "indices": "index_1,index_2"
}

列出快照相关的信息

列出快照snapshot_2的信息

GET _snapshot/my_backup/snapshot_2

获取my_backup仓库下所有的快照信息

GET _snapshot/my_backup/_all

删除快照

删除snapshot_2快照

DELETE _snapshot/my_backup/snapshot_2

监控快照进度

GET _snapshot/my_backup/snapshot_2/_status

取消一个快照

DELETE _snapshot/my_backup/snapshot_2

从快照恢复

将snapshot_1恢复。

POST _snapshot/my_backup/snapshot_1/_restore

默认行为是把这个快照里存有的所有索引都恢复,也可以指定这个快照中的具体索引进行恢复。

恢复snapshot_1快照中的index_1索引,并重命名为restored_index_1
POST /_snapshot/my_backup/snapshot_1/_restore
{
    "indices": "index_1", 
    "rename_pattern": "index_(.+)", 
    "rename_replacement": "restored_index_$1" 
}

- 只恢复 index_1 索引,忽略快照中存在的其余索引。
- 查找所提供的模式能匹配上的正在恢复的索引。
- 然后把它们重命名成替代的模式。

监控恢复操作

GET restored_index_3/_recovery

或者查看你集群里所有索引,可能包括跟你的恢复进程无关的其他分片移动:

GET /_recovery/

取消一个恢复

要取消一个恢复,你需要删除正在恢复的索引。因为恢复进程其实就是分片恢复,发送一个 删除索引 API 修改集群状态,就可以停止恢复进程。比如:

DELETE /restored_index_3

如果 restored_index_3 正在恢复中,这个删除命令会停止恢复,同时删除所有已经恢复到集群里的数据。