elasticsearch 之数据迁移 - Snapshot

一、Snapshort做数据迁移的优点

优点

  • 1、速度快适合大数据量迁移(2500万数据建立快照需要2-3分钟产出4.5G文件)

二、配置

单节点配置

1、创建快照仓库

在elasticsearch机器上创建仓库目录:

mkdir /repository
# 赋权
chown -R elasticsearch:elasticsearch /repository

2、在elasticsearch.yml文件中加入下面配置:

path.repo: /repository

3、启动elasticsearch后在kibana中执行下面命令:


# my_local_repo 为自定义仓库名称

PUT _snapshot/my_local_repo
{
  "type": "fs",
  "settings": {
    "location": "/repository"
  }
}

集群部署配置

集群部署的elasticsearch可以结合nfs完成,nfs的部署请参考

1、创建快照仓库

nfs服务器配置(可以在elasticsearch的master节点上进行)

vim /etc/exports
/repository-nfs 192.168.4.0/24(rw,sync,fsid=0)

#授予权限
chmod -R 666 repository-nfs

#重载数据
exportfs -rv

nfs客户端配置(elasticsearch的node节点)

mkdir /repository

mount -t nfs 192.168.4.32:/repository-nfs /repository

2、在各个节点中的elasticsearch.yml文件中加入下面配置:

path.repo: /repository

3、重启elasticsearch集群后在kibana中执行下面命令:


# my_local_repo 为自定义仓库名称

PUT _snapshot/my_local_repo
{
  "type": "fs",
  "settings": {
    "location": "/repository"
  }
}

三、创建快照

1、为索引创建快照

# snapshot_1 为快照名称
PUT _snapshot/my_local_repo/snapshot_1
{
  "indices": "index_name", # 多个索引用逗号分隔
  "ignore_unavailable": true,
  "include_global_state": true
}

2、查看快照状态

GET _snapshot/my_local_repo/_all

>>>>>>
{
  "snapshots" : [
    {
      "snapshot" : "snapshot_1",
      "uuid" : "KvRKl6MwRD-cNVpM0PdXsQ",
      "version_id" : 6050499,
      "version" : "6.5.4",
      "indices" : [
        "law_index",
        "case_index",
        "belowins_drug_index",
        "belowins_food_index",
        "callback_medical_index",
        "obj_index",
        "ent_index",
        "callback_drug_index"
      ],
      "include_global_state" : true,
      "state" : "IN_PROGRESS", # IN_PROGRESS 进行中,SUCCESS 完成
      "start_time" : "2020-11-18T03:19:57.826Z",
      "start_time_in_millis" : 1605669597826,
      "end_time" : "1970-01-01T00:00:00.000Z",
      "end_time_in_millis" : 0,
      "duration_in_millis" : -1605669597826,
      "failures" : [ ],
      "shards" : {
        "total" : 0,
        "failed" : 0,
        "successful" : 0
      }
    }
  ]
}

注意:上面创建快照命令不会等待快照初始化完成,而是立即返回,如果想要等待初始化完成后在返回需要加
wait_for_completion=true 但是如果等待时间较长会超时。


(不建议加此参数,可以通过查看快照状态,判断是否完成。)

3、删除快照

DELETE _snapshot/my_local_repo/snapshot_1

4、恢复快照

如果是做数据迁移的话,将仓库地址打包传到目标地址后做快照恢复即可。

POST _snapshot/my_local_repo/snapshot_1/_restore
{
  "indices": "index_name", # 多值情况用逗号分隔
  "ignore_unavailable": true,
  "include_global_state": false
}

注意:要恢复快照的索引需要时关闭状态,或者先删除当前索引(谨慎操作,建议提前建立快照)

POST index_name/_close 或者 DELETE index_name

常见问题

  • 1、集群部署是es读写repository-nfs是的权限问题?

    答:以为es部署不能使用root账号,所以给安装es创建的账号修改权限

    usermod -u 500 es
    groupmod -g 500 es
    

    注意:usermod时需要es用户没有进程在活动,就是说elasticsearch进程需要关闭

posted @ 2021-01-05 15:00  believexin  阅读(631)  评论(0编辑  收藏  举报