配置仓库地址
一般我们需要在Elasticsearch集群所有节点的elasticsearch.yml文件中配置数据备份的仓库地址,如下:
path.repo: [\"/mount/backups\"]
备份
备份分两步:1、创建一个仓库。2、备份指定索引。
1、创建一个仓库(creating the repository)
备份数据之前,要创建一个仓库来保存数据,仓库的类型支持Shared filesystem, Amazon S3, HDFS和Azure Cloud。下面以文件系统为例:
PUT http://127.0.0.1:9200/_snapshot/my_backup
{
\"type\": \"fs\",
\"settings\": {
\"location\": \"/mount/backups/my_backup\"
}
}
上面的代码,我们创建了一个名叫my_backup 的备份,存放在本地的/mount/backups/my_backup 目录下。除了location 参数外,还可以通过max_snapshot_bytes_per_sec 和max_restore_bytes_per_sec 来限制备份和恢复时的速度,如下:
POST http://127.0.0.1:9200/_snapshot/my_backup/
{
\"type\": \"fs\",
\"settings\": {
\"location\": \"/mount/backups/my_backup\",
\"max_snapshot_bytes_per_sec\" : \"50mb\",
\"max_restore_bytes_per_sec\" : \"50mb\"
}
}
注意:第一段代码用的是PUT 请求,用来创建repository,第二段代码用的是POST 请求,来修改已经存在的repository。
2、备份索引
仓库创建好之后就可以开始备份了。一个仓库可以包含多个快照(snapshots),快照可以存所有的索引,部分索引或者一个单独的索引。可以给索引指定一个唯一的名字:
PUT http://127.0.0.1:9200/_snapshot/my_backup/snapshot_1
上面的代码会将所有正在运行的索引,备份到my_backup仓库下一个叫snapshot_1的快照中。上面的api会立刻返回,然后备份工作在后台运行。如果你想api同步执行,可以加wait_for_completion 标志
PUT http://127.0.0.1:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true
上面的方法会在备份完成后才返回,如果数据量大的话,会花很长时间。
如果只想备份部分索引的话,可以加上indices 参数:
PUT http://127.0.0.1:9200/_snapshot/my_backup/snapshot_2
{
\"indices\": \"index_1,index_2\"
}
3、删除备份
不要手动删除文件(Elasticsearch一贯主张使用api操作,尤其是大集群中),删除snapshot_2:
DELETE http://127.0.0.1:9200/_snapshot/my_backup/snapshot_2
如果备份正在后台进行,也可以直接删除来取消此次备份。
4、查看备份信息
直接使用GET 请求即可:
GET http://127.0.0.1:9200/_snapshot/my_backup/snapshot_2
返回类似下面的值:
{
\"snapshots\": [
{ \"snapshot\": \"snapshot_2\",
\"indices\": [
\"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
}
} ]
}
如果要查看所有索引的信息,使用如下api:
GET http://127.0.0.1:9200/_snapshot/my_backup/_all
另外还有个一api可以看到更加详细的信息:
GET http://127.0.0.1:9200/_snapshot/my_backup/snapshot_3/_status
详细内容可以查看官方的文档
恢复
需要先关闭或删除原索引,恢复成功后自动打开
POST /index_1/_close
恢复snapshot_1里的全部索引:
POST http://127.0.0.1:9200/_snapshot/my_backup/snapshot_1/_restore
这个api还有额外的参数:
POST http://127.0.0.1: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://127.0.0.1:9200/_recovery/restored_index_3
- GET http://127.0.0.1:9200/_recovery/
如果要取消恢复过程(不管是已经恢复完,还是正在恢复),直接删除索引即可:
- DELETE http://127.0.0.1:9200/restored_index_3
更多内容参看官方文档。
FAQ:
1,是否可配置多个备份路径,挂载多块共享存储
可配置多个备份路径,挂载多块共享盘
path.repo: [\"/export/data/es_backup\",\"/export/data/es_backup2\"]
2,原索引数据大小,备份数据大小,压缩后备份数据大小之间的比例
压缩仅处理元数据文件(索引的映射与设置)。数据文件不被压缩。默认为true
|
索引 |
数据量 |
磁盘目录大小 |
快照大小 |
压缩快照大小 |
|---|---|---|---|---|
system-log-2018.07.03 |
164080 |
59.8mb |
61mb | 61mb |
3,segment merge对快照有无影响
4,增量备份策略
5,上传云存储策略
继续阅读与本文标签相同的文章
罗永浩点赞坚果Pro 3听障模式:感动
-
揭秘军运村里的吃、住、行和黑科技!
2026-05-19栏目: 教程
-
75万核心150万线程,UKRI计划新增EPYC Rome超级计算机
2026-05-19栏目: 教程
-
Java B2B2C多用户商城 springcloud架构(二)
2026-05-19栏目: 教程
-
特斯拉为自动雨刮创造了一个新的神经网络“Deep Rain”
2026-05-19栏目: 教程
-
银联:强力提升国际影响力
2026-05-19栏目: 教程
