使用 esm 进行 Search 集群数据迁移/备份

  数据迁移
内容纲要

概要描述

使用传统的方式来迁移或备份 Search 数据会比较麻烦,本文介绍一种利用 esm 来快速进行数据迁移的方式。

详细说明

本文将通过一个小实验来说明 esm 的使用方式。

实验目标

将 172.22.20.1(源主机)search 中的 "ticket_info" 这个 index 迁移至 172.22.44.91(目标主机)中。

其中有 2 个前提需要注意:

  1. 源主机和目标主机对应开源的 ElasticSearch 的版本均为 5.4.1
  2. 源主机和目标主机都没有开启安全认证。

如果不满足这两个前提,本文所述的方法能否成功还有待进一步验证。

实验步骤

  1. 由于源主机的 search 中使用了 analysis-hanlp 和 analysis-pinyin 这两个插件,而目标主机的 search 中没有安装,所以需要先将这两个插件拷贝至目标集群 search 的三个节点上。

    在172.22.20.1(源主机)上执行以下命令:

    scp -r /etc/search1/instancegroup1/conf/plugins/* root@172.22.44.91:/etc/search1/instancegroup1/conf/plugins/
    
    scp -r /etc/search1/instancegroup1/conf/plugins/* root@172.22.44.6:/etc/search1/instancegroup1/conf/plugins/
    
    scp -r /etc/search1/instancegroup1/conf/plugins/* root@172.22.44.7:/etc/search1/instancegroup1/conf/plugins/
  2. 登录172.22.44.91:8180 重启 search1 集群。

  3. 在 172.22.44.91(目标主机)上输入以下命令查看分词器是否生效

    curl -s "localhost:9200/_cat/plugins?v"

    ​ 如果出现 analysis-hanlp 及 analysis-pinyin,则说明安装成功。

  4. 下载 esm

    下载地址为:Releases · medcl/esm (github.com)

    根据自己的操作系统版本选择相应的版本进行下载,此处以 migrator-linux-amd64 为例。

    下载完成后,再进行如下操作

    # 重命名
    mv migrator-linux-amd64 esm
    # 添加可执行权限
    chmod u+x esm

    此时,再执行./esm --help 可以看到该命令的详细使用说明。

  5. 执行以下命令,进行数据迁移

    ./esm -s http://172.22.20.1:9200 -x "ticket_info" -y "ticket_info_xxx" -d http://172.22.44.91:9200 -c 10000 --copy_settings --copy_mappings --force  --refresh

    命令解读:

    • -s : 指定源 search
    • -x : 指定源 index 名
    • -y :指定目标 index 名
    • -d:指定目标 search
    • -c:指定每一批次迁移的 document 数量
    • –copy_settings –copy_mappings –force –refresh:此处由于目标 search 中原本不存在 "ticket_info_xxx" 这个 index,其 settings 和 mappings 都需要从源 index 中拷贝过来,所以需要加这么一串指令。

    最终出现如下界面则说明数据迁移成功:

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。