日常维护elasticsearch集群会出现新老集群数据迁移,这里使用的是snapshot api是Elasticsearch用于对数据进行备份和恢复的一组api接口,可以通过snapshot api进行跨集群的数据迁移,原理就是从源ES集群创建数据快照,然后在目标ES集群中进行恢复。
1、新老集群修改集群配置文件:
vim elasticsearch.yml
repo: ["/snapshot"]
2、创建NFS共享目录操作省略
挂载目录:/snapshot (旧集群和新集群挂载同一个目录并配置权限确保目录有读写权限)
3、创建集群索引快照库:】
注意旧集群和新集群都需要操作如下展示
post http://192.168.1.1:9201/_snapshot/interface_2_bakup
{
"type": "fs",
"settings": {
"location": "interface_2_bakup",
"compress": true,
"max_snapshot_bytes_per_sec" : "20mb",
"max_restore_bytes_per_sec" : "20mb"
}
}
可以通过postman工具操作如下图:
4、自动化迁移数据脚本
迁移数据需要从A集群到B集群,如下脚本,只需要把IP更换为自己两组集群其中任意一个IP地址,数据将A集群导出到两组集群公共目录上同时确保空间充足,导出完毕;然后读取公共目录的数据文件进行导入到新的B集群上,这就是一个数据迁移的过程。脚本如下:
#!/bin/bash
#es节点IP
BACK_IP=192.168.1.1
INPUT_IP=192.168.2.1
#备份,还原索引名称
output_indices=`cat /opt/shell/es_qianyi/