elasticsearch数据迁移
迁移原因
公司从金融云迁移到普通云,需要吧elasticsearch的数据迁移到普通云来,elasticsearch的版本一致。ik分词,集群都提前做好
迁移方式
第三方工具迁移或elasticsearch本身快照方式迁移,elasticsearch快照方式迁移需要对原有的es进行配置和重启。这里采用的是第三方工具进行迁移Elaticsearch-dump
,Elaticsearch-dump
github地址
elaticsearch-dump 安装
安装nodejs
1 | cd /opt |
安装elasticdump
1 | #全局安装 |
elasticsearch 索引数据
记录待迁移elasticsearch 索引数据内容和数据总量,以便迁移后核对
1 | curl http://ip:9200/_cat/indices?v |
索引迁移
索引导出
1 | elasticdump --input=http://旧es_ip:9200/索引名称 --output=/opt/es/索引名称.index.json --type=data |
索引导入
1 | elasticdump --input=/opt/es/索引名称.index.json --output=http://新es_ip:9200 |
导出导入设置
导入导出时会显示 每次操作的 object数据(默认为100),如果调大,设置–limit参数既可
直接从源es到迁移到新的es
1 | #拷贝analyzer分词 |
注意: elasticdump 提供给了–httpAuthFile 参数来做认证
–httpAuthFile When using http auth provide credentials in ini file in form
user=<username> password=<password>
只需要写一个ini文件 ,文件中写入用户名和密码就可以了
这里其实还有另外一个好的方法
在–input参数和–output参数的的url中添加账号密码
例如:
1 | elasticdump \ |
数据比对
数据对比方法,使用shell命令diff比较
1 | # 老数据 |
迁移测试实战
一个es集群里面不止一个索引,为了方便这里写了一个脚本进行导出数据和导入数据
直接迁移
直接迁移是从源es到迁移到新的es,适用于网络较好,数据量不大的场景
1 |
|
文件迁移
文件迁移是吧数据导出为文件,然后吧文件复制到新的es集群,通过文件的方式进行恢复。适用于数据量大。网络不好。这里导出没有进行数据压缩
数据备份
1 | cat >es_backup.sh<<EOF |
数据恢复
1 | cat > es_restore.sh<<EOF |
数据切割备份和恢复
如果使用上述方式恢复失败,可以采用对数据进行切割的方式进行备份和恢复。
1 | # 备份数据,切割为100M的文件 |