es备份数据和恢复数据

1、fs方式(备份到本地挂载的硬盘)
(1) 创建一个仓库
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mount/my_backup"
  }
}
--上面代码创建一个名为“my_backup”的备份,存放在本地磁盘的/mount/my_backup目录下。
注:需要在elasticsearch中config/elasticsearch.yml文件中添加权限 path.repo: ["/home/ccx/es/backups", "/mount/my_backup"]

(1.1) 除了localhost参数外,还可以通过max_snapshot_bytes_per_sec和max_restore_bytes_per_sec来限制备份和恢复时的速度。默认均为(20mb/s)
POST http://localhost:9200/_snapshot/my_backup/   (POST /_snapshot/my_backup)
{  
    "type": "fs",  
    "settings": {  
        "location": "/mount/my_backup",  
        "max_snapshot_bytes_per_sec" : "50mb",   
        "max_restore_bytes_per_sec" : "50mb"  
    }  
}  
注:第一段代码的PUT请求,用来创建respository,第二段代码的POST请求,用来修改已经存在的respository

(2) 备份索引
(2.1) 仓库创建好,就可以进行数据备份了。一个仓库可以包含多个快照(snapshot),快照可以存所有的索引、部分索引或者一个单独的索引,可以给索引指定一个唯一的名字。
PUT http://localhost:9200/_snapshot/my_backup/snapshot_1 (PUT /_snapshot/my_backup/snapshot_1)
上面代码会将所有正在运行的索引,备份到my_backup仓库下一个叫snapshot_1的快照中。上面的api会立刻返回,然后备份工作在后台进行。

(2.2) 如果你想api同步执行,可以加入wait_for_completion标志
PUT http://localhost:9200/_snapshot/my_backup/snapshot_1 (PUT /_snapshot/my_backup/snapshot_1)
注:上面的方法会在备份完成后才返回,如果数据量大的话,会花比较长的时间。

(2.3) 如果只想备份部分索引的话,可以加上indices参数:
PUT http://localhost:9200/_snapshot/my_backup/snapshot_2  (PUT /_snapshot/my_backup/snapshot_2)
{  
    "indices": "index_1,index_2"  
}  
(3) 删除备份
不要手动删除文件(ElasticSearch一贯主张只用api操作,尤其是大集群中),删除snapshot_2
DELETE http://localhost:9200/_snapshot/my_backup/snapshot_2	(DELETE /_snapshot/my_backup/snapshot_2)
(4) 查看备份信息
(4.1)
DELETE http://localhost:9200/_snapshot/my_backup/snapshot_2	(DELETE /_snapshot/my_backup/snapshot_2)
返回值类似以下值:
{
  "snapshots": [
    {
      "snapshot": "snapshot_1",
      "uuid": "46ElP6lrQt2MLVlaj57yXg",
      "version_id": 5020099,
      "version": "5.2.0",
      "indices": [
        "book_index"
      ],
      "state": "SUCCESS",
      "start_time": "2018-03-20T08:14:38.920Z",
      "start_time_in_millis": 1521533678920,
      "end_time": "2018-03-20T08:14:40.522Z",
      "end_time_in_millis": 1521533680522,
      "duration_in_millis": 1602,
      "failures": [],
      "shards": {
        "total": 5,
        "failed": 0,
        "successful": 5
      }
    }
  ]
} 
(4.2) 如果查看所有索引下的信息,是用以下api:
GET http://localhost:9200/_snapshot/my_backup/_all  (GET /_snapshot/my_backup/_all)
另外还有个一api可以看到更加详细的信息:
GET http://localhost:9200/_snapshot/my_backup/snapshot_3/_status  
(5) 恢复备份
备份好后,恢复就更容易了,恢复snapshot_1里的全部索引
POST http://localhost:9200/_snapshot/my_backup/snapshot_1/_restore  
这个api还有额外的参数:
POST http://localhost:9200/_snapshot/my_backup/snapshot_1/_restore  
{  
    "indices": "index_1",   
    "rename_pattern": "index_(.+)",   
    "rename_replacement": "restored_index_$1"   
}  
参数indices设置只恢复index_1的索引,参数rename_pattern和rename_replacement用来正则匹配要恢复的索引,并且重命名。和备份一样,api会立刻返回值,然后在后台进行恢复,只用wait_for_completion标记强制同步执行。

另外可以使用下面两个api查询状态:
GET http://localhost:9200/_recovery/restored_index_3  
GET http://localhost:9200/_recovery/  
如果要取消恢复过程(不管是已经恢复完,还是正在恢复),直接删除索引即可:
DELETE http://localhost:9200/restored_index_3  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值