ElasticSearch 通过快照 备份、恢复数据

因为系统规划,ElasticSearch需要做整体的迁移。业务要求中断时间尽可能少。所以考虑到利用快照迁移数据。
准备:ElasticSearch源端和目标端都需要开启snapshot。
一、事前准备

1、源端与目标端都需在elasticsearch.yml里配置path.repo

操作系统准备
mkdir /es_bak -- 创建临时挂载点
mount ip:/dles_data/data/bak /es_bak -- 挂载路径

ElasticSearch准备
修改配置文件
vim ~.elasticsearch/config/elasticsearch.yml
path.repo: ["/es_bak"] 

2、源端与目标端都需在数据库里配置镜像仓库

curl -v -XPUT 'http://127.0.0.1:9200/_snapshot/my_backup' -H "Content-Type: application/json" -d ' 
{                                                                                                  
    "type": "fs",                                                                                  
    "settings": {                                                                                  
        "location": "/es_bak"                                                                 
    }                                                                                              
}'

二、备份&恢复
1、检查镜像仓库的状态

curl -XGET "http://127.0.0.1:9200/_snapshot/my_backup"

2、检查索引

curl -v -XGET 'http://127.0.0.1:9200/_cat/indices'

3、备份

备份所有索引
curl -XPUT "http://127.0.0.1:9200/_snapshot/my_backup/snapshot_all?wait_for_completion=true"
-- 如果希望创建快照命令阻塞执行,可以添加wait_for_completion参数。命令执行的时间与索引大小相关。
不加的话,可以通过
curl -XGET "http://127.0.0.1:9200/_snapshot/my_backup/snapshot_all/_status"|grep state
查看备份状态

备份指定索引数据
curl -XPUT http://127.0.0.1:9200/_snapshot/my_cos_backup/snapshot_1{"indices": "index_1,index_2"}

4、移动数据
这就是数据的cp或者mv了

5、恢复

curl -XPOST http://127.0.0.1:9200/_snapshot/my_backup/snapshot_all/_restore

这个过程很可能遇到问题,我就遇到如下问题

{
    "error": {
        "root_cause": [{
            "type": "snapshot_restore_exception",
            "reason": "[my_backup:snapshot_all/hTsxYWrTQ-e2XK_NtQaTEg] cannot restore index [.monitoring-alerts-6] because it's open"
        }],
        "type": "snapshot_restore_exception",
        "reason": "[my_backup:snapshot_all/hTsxYWrTQ-e2XK_NtQaTEg] cannot restore index [.monitoring-alerts-6] because it's open"
    },
    "status": 500
}

解决方法很简单,关闭报错的索引就好

curl -XPOST http://127.0.0.1:9200/.monitoring-alerts-6/_close

之后再重新执行restore,直到恢复完毕。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注