ELK之elasticdump迁移es数据
参考:https://www.cnblogs.com/resn/p/9082663.html
elasticsearch部分查询语句
获取集群节点列表
curl "172.16.30.55:9200/_cat/nodes?v"
列出所有索引
curl "172.16.30.55:9200/_cat/indices?v"
如果节点安装了search guard认证使用以下命令
curl "https://admin:admin@172.16.30.55:9200/_cat/indices?v" -k
-k取消证书验证而使用用户名和密码验证
安装elasticdump
wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz tar xf node-v8.11.2-linux-x64.tar.xz mv node-v8.11.2-linux-x64 /usr/local ln -s /usr/local/node-v8.11.2-linux-x64/bin/npm /usr/local/bin/npm ln -s /usr/local/node-v8.11.2-linux-x64/bin/node /usr/local/bin/node npm init -f npm install elasticdump
2023-12-28安装时报错
error code EUNSUPPORTEDPROTOCOL
升级版本例如14版本
修改文件增加以下内容/etc/profile
注意: node_mpdules路径为执行npm install elasticdupm命令对应的路径
export NODE_HOME=/usr/local/node-v8.11.2-linux-x64 export PATH=$PATH:$NODE_HOME/bin:/opt/node_modules/elasticdump/bin export NODE_PATH=$NODE_HOME/lib/node_modules
设置生效
source /etc/profile
数据迁移
数据通过网络进行迁移 从主机172.16.30.55迁移至172.16.30.56
#拷贝映射 elasticdump \ --input=http://172.16.30.55:9200/nginx-prod-log-2019.02 \ --output=http://172.16.30.55:9200/nginx-prod-log-2019.02\ --type=mapping #拷贝数据 elasticdump \ --input=http://172.16.30.55:9200/nginx-prod-log-2019.02 \ --output=http://172.16.30.56:9200/nginx-prod-log-2019.02 \ --type=data
如果网络不好或者没有网络还可以先备份到文件
#备份映射 elasticdump \ --input=http://172.16.30.55:9200/nginx-prod-log-2019.02 \ --output=/tmp/nginx-prod-log_mapping.json \ --type=mapping #备份数据 elasticdump \ --input=http://172.16.30.55:9200/nginx-prod-log-2019.02 \ --output=/tmp/nginx-prod-log_data.json \ --type=data
通过备份文件恢复数据
#恢复映射 elasticdump \ --input=/tmp/nginx-prod-log_mapping.json \ --output=http://172.16.30.55:9200/ \ #恢复数据 elasticdump \ --input=/tmp/nginx-prod-log_data.json \ --output=http://172.16.30.55:9200/ \
加密的数据迁移 当客户端使用search guard进行加密时候数据迁移命令格式如下
#前面加参数,后面https加入用户名和密码即可 NODE_TLS_REJECT_UNAUTHORIZED=0 elasticdump --input=http://172.16.90.11:9200/try_on_2019.03 --output=https://admin:admin@172.16.30.11:9200/try_on_2019.03 --type=mapping NODE_TLS_REJECT_UNAUTHORIZED=0 elasticdump --input=http://172.16.90.11:9200/try_on_2019.03 --output=https://admin:admin@172.16.30.11:9200/try_on_2019.03 --type=data
PS:同理如果是output端是search guard加密也是在前面加参数然后把http改成https后面在加用户名和密码认证
从备份好的json文件恢复至加密的elasticsearch命令格式如下
NODE_TLS_REJECT_UNAUTHORIZED=0 elasticdump --input=mapping20190610/on_the_ark_2019.02_mapping.json --output=https://root:password@172.16.30.11:9200 NODE_TLS_REJECT_UNAUTHORIZED=0 elasticdump --input=data20190610/96_stock_data.json --output=https://root:password@172.16.30.11:9200/
PS:输入不需要加密认证,输出不需要加--type参数