Elasticsearch 索引备份

快照仓库

注册快照存储库

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 _snapshot/search_user_v6
{
    "type": "fs",
    "settings": {
      "location": "search_user_v6",
      "max_restore_bytes_per_sec": "60mb",
      "compress": "true",
      "max_snapshot_bytes_per_sec": "60mb"
    }
  }
  • my_backup 仓库的名字
  • max_snapshot_bytes_per_sec:当快照数据进入仓库时,这个参数控制这个过程的限流情况。默认是每秒 20mb
  • max_restore_bytes_per_sec:当从仓库恢复数据时,这个参数控制什么时候恢复过程会被限流以保障你的网络不会被占满。默认是每秒 20mb

查看所有快照仓库

GET /_snapshot/_all

删除快照仓库

DELETE /_snapshot/my_repository

快照

创建快照

备份单个索引

备份 index_1,index_2 索引到my_repository 仓库下,命名为:status_v7_snapshot

PUT /_snapshot/my_repository/status_v7_snapshot
{
  "indices":"index_1,index_2",
  "ignore_unavailable":true,
  "include_global_state":true
}

备份所有索引

备份所有打开的索引到 my_backup 仓库下命名为:snapshot_1

PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
  • wait_for_completion:这个会阻塞调用直到快照完成。注意大型快照会花很长时间才返回。

查看备份信息

GET _snapshot/my_backup/snapshot_2

返回结果

{
   "snapshots": [
      {
         "snapshot": "snapshot_1",
         "indices": [
            ".marvel_2014_28_10",
            "index1",
            "index2"
         ],
         "state": "SUCCESS",
         "start_time": "2014-09-02T13:01:43.115Z",
         "start_time_in_millis": 1409662903115,
         "end_time": "2014-09-02T13:01:43.439Z",
         "end_time_in_millis": 1409662903439,
         "duration_in_millis": 324,
         "failures": [],
         "shards": {
            "total": 10,
            "failed": 0,
            "successful": 10
         }
      }
   ]
}

查看 my_backup 仓库中所有快照

GET _snapshot/my_backup/_all

删除快照

删除 my_backup 仓库中 snapshot_2 备份

DELETE _snapshot/my_backup/snapshot_2

监控快照进度

_status API 立刻返回

GET _snapshot/my_backup/snapshot_3/_status

返回结果

{
   "snapshots": [
      {
         "snapshot": "snapshot_3",
         "repository": "my_backup",
1.         "state": "IN_PROGRESS", 
         "shards_stats": {
            "initializing": 0,
2.            "started": 1, 
            "finalizing": 0,
            "done": 4,
            "failed": 0,
            "total": 5
         },
         "stats": {
            "number_of_files": 5,
            "processed_files": 5,
            "total_size_in_bytes": 1792,
            "processed_size_in_bytes": 1792,
            "start_time_in_millis": 1409663054859,
            "time_in_millis": 64
         },
         "indices": {
            "index_3": {
               "shards_stats": {
                  "initializing": 0,
                  "started": 0,
                  "finalizing": 0,
                  "done": 5,
                  "failed": 0,
                  "total": 5
               },
               "stats": {
                  "number_of_files": 5,
                  "processed_files": 5,
                  "total_size_in_bytes": 1792,
                  "processed_size_in_bytes": 1792,
                  "start_time_in_millis": 1409663054859,
                  "time_in_millis": 64
               },
               "shards": {
                  "0": {
                     "stage": "DONE",
                     "stats": {
                        "number_of_files": 1,
                        "processed_files": 1,
                        "total_size_in_bytes": 514,
                        "processed_size_in_bytes": 514,
                        "start_time_in_millis": 1409663054862,
                        "time_in_millis": 22
                     }
                  },
                  ...
  1. 一个正在运行的快照会显示 IN_PROGRESS 作为状态。
  2. 这个特定快照有一个分片还在传输(另外四个已经完成)。

取消一个快照

取消正在备份的快照:直接删除就可以了。

DELETE _snapshot/my_backup/snapshot_3

从快照恢复

恢复

默认将快照里所有的索引都恢复

POST _snapshot/my_backup/snapshot_1/_restore

指定恢复索引

这个会恢复 index_1 到你及群里,但是重命名成了 restored_index_1

POST /_snapshot/my_backup/snapshot_1/_restore
{
1    "indices": "index_1", 
2    "rename_pattern": "index_(.+)", 
3    "rename_replacement": "restored_index_$1" 
}
  1. 只恢复 index_1 索引,忽略其他索引。
  2. 模式能匹配上的正在恢复的索引。
  3. 然后把它们重命名成替代的模式。

监控

监控 restored_index_3 索引恢复情况

GET restored_index_3/_recovery

查看你集群里所有索引

GET /_recovery/

返回结果

{
  "restored_index_3" : {
    "shards" : [ {
      "id" : 0,
1      "type" : "snapshot", 
      "stage" : "index",
      "primary" : true,
      "start_time" : "2014-02-24T12:15:59.716",
      "stop_time" : 0,
      "total_time_in_millis" : 175576,
2      "source" : { 
        "repository" : "my_backup",
        "snapshot" : "snapshot_3",
        "index" : "restored_index_3"
      },
      "target" : {
        "id" : "ryqJ5lO5S4-lSFbGntkEkg",
        "hostname" : "my.fqdn",
        "ip" : "10.0.1.7",
        "name" : "my_es_node"
      },
      "index" : {
        "files" : {
          "total" : 73,
          "reused" : 0,
          "recovered" : 69,
3          "percent" : "94.5%" 
        },
        "bytes" : {
          "total" : 79063092,
          "reused" : 0,
          "recovered" : 68891939,
          "percent" : "87.1%"
        },
        "total_time_in_millis" : 0
      },
      "translog" : {
        "recovered" : 0,
        "total_time_in_millis" : 0
      },
      "start" : {
        "check_index_time" : 0,
        "total_time_in_millis" : 0
      }
    } ]
  }
}
  1. type 字段告诉你恢复的本质;这个分片是在从一个快照恢复。
  2. source 哈希描述了作为恢复来源的特定快照和仓库。
  3. percent 字段让你对恢复的状态有个概念。这个特定分片目前已经恢复了 94% 的文件;它就快完成了。

取消恢复

取消正在备份的快照:直接删除就可以了。

DELETE /restored_index_3
备份 Elasticsearch 索引可以通过 Elasticsearch 的 Snapshot API 来实现。Elasticsearch-head 是一个基于浏览器的 Elasticsearch 管理界面,它并不提供索引备份功能,但你可以使用 Elasticsearch-head 来检查索引的状态并执行备份操作。 以下是备份 Elasticsearch 索引的步骤: 1. 创建一个用于存储备份Elasticsearch 仓库。你可以使用本地文件系统或者远程文件系统(如 S3、Azure Blob 存储等)作为仓库。例如,使用本地文件系统作为仓库: ``` PUT /_snapshot/my_backup { "type": "fs", "settings": { "location": "/path/to/my/backup/directory" } } ``` 2. 在仓库中创建一个快照。以下示例将备份名为 `my_index_backup` 的索引: ``` PUT /_snapshot/my_backup/my_index_backup?wait_for_completion=true { "indices": "my_index", "ignore_unavailable": true, "include_global_state": false } ``` 其中,`wait_for_completion` 参数表示是否等待备份完成,`indices` 参数表示要备份索引名称,`ignore_unavailable` 参数表示是否忽略不可用的索引,`include_global_state` 参数表示是否备份全局状态信息。 备份完成后,你可以使用 Elasticsearch-head 来检查备份状态: 1. 打开 Elasticsearch-head 界面,选择要备份索引,点击 `Snapshots` 标签页。 2. 在 `Snapshots` 标签页中,你可以看到备份的状态和详细信息。 注意,备份索引可能会花费一定的时间和存储空间。建议在低峰期进行备份操作,并定期清理旧的备份文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值