一. 安装npm,node

  • 下载安装包
wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.xz
  • 解压
xz -d node-v10.13.0-linux-x64.tar.xz 

tar xvf node-v10.13.0-linux-x64.tar
  • 建立文件软连接到系统命令
ln -s /root/node-v10.13.0-linux-x64/bin/node /usr/bin/node
ln -s /root/node-v10.13.0-linux-x64/bin/npm /usr/bin/npm
  • 检查是否安装成功
node -v
npm  -v

二. 安装elasticdump

2.1 在线安装

  • 安装
npm install elasticdump -g
  • 建立文件软连接到系统命令
ln -s /root/node-v10.13.0-linux-x64/lib/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump
  • 验证
elasticdump --help

2.2 离线安装

在同样的系统版本有网络的服务器下生成模块elasticdump缓存(安装同上2.1)

2.2.1 模块缓存导出:

  • 查看缓存目录位置
npm config get cache
cd /root/.npm/
  • 压缩缓存,并拷贝到待安装机器
tar -cf npm-cache.tar .npm

2.2.2 模块缓存导入安装:

  • 解压
tar -xvf npm-cache.tar
  • 进入node下的lib目录执行安装命令(npm5.0 npm机制不一样)
cd /root/node-v10.13.0-linux-x64/lib
npm install --cache /root/.npm --optional --cache-min 99999999999 --shrinkwrap false elasticdump

注意 :如果执行npm install 出错提示资源未找到则执行
npm install --cache /root/.npm express --prefer-offline --shrinkwrap false elasticdump

  • 建立文件软连接到系统命令
ln -s /root/node-v10.13.0-linux-x64/lib/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump
  • 验证
elasticdump --help

三. 数据备份,还原,迁移

使用elasticdump进行单个索引备份还原操作——

导出索引test_event的mapping映射结构:
elasticdump --input=http://127.0.0.1:9200/test  --output=/opt/test_mapping.json --type=mapping
  • 还可以直接导入到另一个es集群当中:
elasticdump --input=http://127.0.0.1:9200/test   --output=http://127.0.0.2:9200/test --type=mapping
导出索引test_event的数据:

elasticdump --input=http://127.0.0.1:9200/test --output=/opt/data.json --type=data

  • 直接将备份数据导入另一个es集群:
elasticdump --input=http://127.0.0.1:9200/test   --output=http://127.0.0.2:9200/test --type=data
elasticdump进行数据还原操作
  • mapping映射结构还原:
elasticdump --input=/opt/test_mapping.json --output http://127.0.0.1:9200/ --type=mapping
  • data数据还原
elasticdump --input=/opt/data.json    --output=http://127.0.0.1:9200/test    --type=data
使用multielasticdump进行多个索引备份操作:
  • 将ES索引及其所有类型备份到es_backup文件夹中
multielasticdump direction = dump match ='^.*$'  input = http://127.0.0.1:9200   output =/tmp/es_backup
  • 仅备份ES索引以“ -index”(匹配正则表达式)为前缀的结尾。仅备份索引数据。所有其他类型都将被忽略。
    #注意:默认情况下会忽略分析器和别名类型
multielasticdump --direction=dump --match='^.*-index$' --input=http://127.0.0.1:9200 --ignoreType='mapping,settings,template'  --output=/tmp/es_backup
使用elasticdump进行多个索引还原操作:
multielasticdump --direction=load --input=/tmp/es_backup --output=http://127.0.0.1:9200

根据npm的elasticdump英文官网介绍可知,这里需要注意一点是,即使用multielasticdump有一个区别的地方是
–direction的参数设置和–ignoreType参数设置。
备份时,–direction=dump是默认值,则–input必须是ElasticSearch服务器基本位置的URL(即http://localhost:9200),并且–output必须是目录。每个匹配的索引都会创建一个数据,映射和分析器文件。

还原时,要加载从multi- elasticsearch转储的文件,-direction 应将其设置为load ,–input必须是multielasticsearch转储的目录,并且–output必须是Elasticsearch服务器URL。

–match`用于过滤应转储/加载的索引(正则表达式)。

–ignoreType允许从转储/加载中忽略类型。支持六个选项。data,mapping,analyzer,alias,settings,template。提供了多类型支持,使用时每种类型必须用逗号分隔,并interval允许控制生成新索引的转储/装入的时间间隔。

–includeType允许将类型包含在转储/装载中。支持六个选项- data,mapping,analyzer,alias,settings,template。

带账号密码的数据迁移
./elasticdump --input=http://username:password@192.168.1.2:9200/test --output=http://username@password@192.1