ElasticSearch快照备份与还原
1.备份和还原机器上的共同操作
++注意:一定要在原始集群和要迁移的集群上都运行++
1.1创建备份还原目录
这里放到/opt/backup_es目录下
bash
cd /opt
mkdir backup_es
#为了避免权限问题,直接修改该文件夹权限为777
chmod 777 /opt/backup_es
1.2 注册备份还原目录
修改elasticsearch.yml
添加如下配置(如果是集群,则每一个数据节点都得配置)
bash
path.repo: /data/backup
bash
path.repo:['/opt/backup_es']
重启elasticsearch
注册备份还原仓库(仓库名称为my_backup)
bash
PUT http://地址:9200/_snapshot/my_backup/
参数为
bash
{
"type": "fs",
"settings": {
"location": "/opt/backup_es",
"max_snapshot_bytes_per_sec" : "50mb",
"max_restore_bytes_per_sec" : "50mb",
"compress" : true
}
}
这里执行完之后没有任何变化
参数说明:
location:指定快照的存储位置,必须有
compress:指定是否对快照文件进行压缩,默认是ture
max_snapshot_bytes_per_sec:每个节点做快照的最高速度限制。默认是 20mb/s
max_restore_bytes_per_sec:每个节点恢复数据的最高速度限制. 默认是 20mb/s
2.备份数据
在my_backup仓库下备份数据,备份的名字自己设定(此处我的设定为tyyw_sjyy)
PUT http://地址:9200/_snapshot/my_backup/tyyw_sjyy
备份完数据后就会在/opt/backup_es目录下生成备份的元数据
在执行上面一条请求时,还可在请求体中添加以下参数来发送请求
参数说明:
indices:指定快照包含的索引 格式为"indices": "index_1,index_2"
ignore_unavailable:把这个选项设置为 true 的时候在创建快照的过程中会忽略不存在的索引。默认情况下, 如果没有设置 ignore_unavailable 在索引不存在的情况下快照请求将会失败 格式为"ignore_unavailable": "true"
include_global_state:通过设置 include_global_state 为false 能够防止 集群的全局状态被作为快照的一部分存储起来。
partial:默认情况下,如果快照中的1个或多个索引不是全部主分片都可用会导致整个创建快照的过 程失败。 通过设置 partial 为 true 可以改变这个行为。
查看备份状态
GET http://地址:9200/_snapshot/my_backup/tyyw_sjyy
3.还原数据
将备份机器上的/opt/backup_es目录下的元数据拷贝到要还原的目标机器的备份还原目录下
在需要还原的机器上执行POST请求
POST http://地址:9200/_snapshot/my_backup/tyyw_sjyy/_restore
需要注意的是执行上面一条请求的时候,默认是将备份机器上的全部索引都还原到目标机器上,如果只是想
备份部分索引的话,可以在请求体加上下面的参数
{ "indices":"index1,index2...indexN"}
参数说明:
rename_pattern 和 rename_replacement 选项可以在恢复的时候使用正则表达式来重命名index.例如:
"rename_pattern": "index(.+)",
"rename_replacement": "restored_index$1"
参考网址:
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/modules-snapshots.html#_snapshot
https://blog.csdn.net/qq_35623773/article/details/84331469
https://blog.csdn.net/frankcheng5143/article/details/95168300