一、背景
将ES-5.1.1版本中的50多T的数据迁移到ES-5.6.12版本中,且两个集群在同一局域网。
此文档基于centos7系统,实际操作根据系统进行调整。
参考:
https://www.cnblogs.com/reblue520/p/6784497.html
https://blog.youkuaiyun.com/warrah/article/details/78978244
采用方式: 使用nfs创建共享文件夹
二、NFS准备工作
5.1.1版本ES集群:10.10.77.100、10.10.77.101、10.10.77.107
5.2.16版本ES集群:10.10.77.104、10.10.77.105、10.10.77.106
1.Nfs配置(新ES集群配置)
① 首先确认服务器是否安装并启动nfs和rpcbind服务。后面将会使用Mount nfs进行挂载。
systemctl status nfs
systemctl status nfs-server.service
systemctl status rpcbind
② 若未安装则先下载安装
下载nfs-utils-2.4.3.tar.gz和rpcbind-1.2.5.tar.bz2
解压后按如下方式启动即可
tar -xf nfs-utils-2.4.3.tar.gz
tar -xjf rpcbind-1.2.5.tar.bz2
或者下载rpm包
http://rpmfind.net/linux/RPM/fedora/32/s390x/n/nfs-utils-2.4.3-0.fc32.s390x.html
③ 若未启动,则执行启动命令
systemctl start nfs
systemctl start rpcbind
并设置开机启动
systemctl enable rpcbind
systemctl enable nfs
systemctl enable nfs-server
2.设置目录挂载
① 在新ES集群的机器上(10.10.77.104、10.10.77.105、10.10.77.106)添加共享的文件夹和客户端可以访问的IP地址。
② 设置共享文件夹,在集群的每个节点上进行如下操作,
创建目录,
mkdir /data/voice
vim /etc/exports
/data/voice *(insecure,rw,no_root_squash,sync,anonuid=500,anongid=500)
③ 查看共享文件夹
exportfs -rv
若没有exportfs 则进行安装
④ 集群内节点设置共享
分别在新集群的从节点挂载到煮节点的共享目录,在10.10.77.105、10.10.77.106节点上运行如下命令:
mount -t nfs 10.10.77.104:/data/voice/ /data/voice/
df -h 查看挂载情况
⑤ 重启启动新集群机器的NFS服务
systemctl restart nfs
⑥ 在旧集群上每台机器上创建共享目录
mkdir /data/backup_es
⑦ 旧集群每一台服务器上进行Mount挂载新集群的共享目录/data/voice。在旧集群上(10.10.77.100、10.10.77.101、10.10.77.107)的每个节点都运行下列语句
mount -t nfs 10.10.77.104:/data/voice /data/backup_es -o proto=tcp -o nolock
⑧ 列出nfs服务端共享的目录:
showmount -e 10.10.77.104
⑨ 旧ES集群给目录设置ES用户
chown elastic:elastic -R /data/backup_es
⑩ Es用户要保证gid和uid一致,最好集群内节点之间的gid和uid也要一致。
旧集群,可以看到3个节点的uid和gid都是1006
节点1:
cat /etc/passwd
cat /etc/group
节点2:
cat /etc/passwd
cat /etc/group
节点3:
cat /etc/passwd
cat /etc/group
新集群,可以看到3个节点的uid和gid都是1007
节点1:
cat /etc/passwd
es: x :1007:
节点2:
cat /etc/passwd
es: x :1007:
节点3:
cat /etc/passwd
es: x :1007:
cat /etc/passwd
如果uid和gid不一致可以修改,
usermod -u xxx es
groupmod -g xxx es
注意usermod 修改时需要es用户没有进程在活动,所以需要关闭es进程,修改完成后再启动。
另外,可以删掉原先的用户,重新建。但是同样要关闭该用户的进程。
新建用户组和用户
groupadd es
useradd es -g es
设置uid和gid
groupadd -g 1007 es
useradd -u 1007 -g es es
三、旧的集群创建仓库和备份
① 关闭自动平衡
curl -XPUT http://10.10.77.100:9200/_cluster/settings -d ‘{
“transient” : {
“cluster.routing.allocation.enable” : “none”
}
}’
② 修改配置文件
vim elasticsearch.yml
添加如下配置(需要在旧集群的每个节点上添加):
path.repo: ["/data/backup_es"]
③ 重启ES,要先kill掉es的进程,然后es用户执行下面命令
./bin/elasticsearch -p /tmp/elasticsearch-pid -d
④ 开启自动平衡
curl -XPUT http://10.10.77.100:9200/_cluster/settings -d ‘{
“transient” : {
“cluster.routing.allocation.enable” : “all”
}
}’
⑤ 创建快照仓库(ES用户操作)
curl --user admin:123456 -XPUT http://10.10.77.100:9200/_snapshot/my_backup -d ’
{
“type”: “fs”,
“settings”: {
“location”: “/data/backup_es”,
“max_snapshot_bytes_per_sec”:“200mb”,
“max_restore_bytes_per_sec”:“200mb”,
“compress”: true }
}
’
查看仓库(ES用户操作)
curl -XGET ‘http://10.10.77.100:9200/_snapshot/my_backup?pretty’
⑥ 创建快照备份(ES用户操作)
curl -XPUT http://10.10.77.100:9200/_snapshot/my_backup/snapshot_1
默认是备份所有索引及数据,也可以快照制定的索引数据
一个索引
curl -XPUT http://10.10.77.100:9200/_snapshot/my_backup/snapshot_cqct_20200508_01 -d ’
{
“indices”: “cqct_20200508_01”
}
’
多个索引
curl -XPUT http://10.10.77.100:9200/_snapshot/my_backup/snapshot_cqct_20200508_01 -d ’
{
“indices”: “cqct_20200508_01,cqct_20200508_02”
}
’
查看备份信息
curl -XGET http://10.10.77.100:9200/_snapshot/my_backup/snapshot_1?pretty
查看快照状态
curl -XGET http://10.10.77.100:9200/_snapshot/my_backup/snapshot_1/_status?pretty
⑦ 查看备份数据
耐心等待直到所有的的备份都完成。
此时查看旧集群每个节点都有/data/backup_es目录下有数据备份出来。新集群每个节点的/data/voice目录下也有数据备份出来。
在所有旧集群服务器上取消挂载 umount /data/backup_es
umount /data/backup_es可能不起作用,可以使用sudo umount -l /data/backup_es
四、新集群创建仓库及恢复数据
① 在新集群每台机器上将共享目录的权限付给ES的运行用户
chown es:es -R /data/voice
② 关闭自动平衡(ES用户操作)
curl -XPUT http://10.10.77.104:9200/_cluster/settings -d ‘{
“transient” : {
“cluster.routing.allocation.enable” : “none”
}
}’
③ 停止ES
④ 修改配置文件
vim elasticsearch.yml
添加如下配置(需要在新集群的每个节点上添加):
path.repo: ["/data/voice"]
⑤ 重启ES,并开启自平衡
./bin/elasticsearch -p /tmp/elasticsearch-pid -d
curl -XPUT http://10.10.77.104:9200/_cluster/settings -d ‘{
“transient” : {
“cluster.routing.allocation.enable” : “all”
}
}’
创建仓库
curl --user admin:123456 -XPUT http://10.10.77.104:9200/_snapshot/my_backup -d ’
{
“type”: “fs”,
“settings”: {
“location”: “/data/voice”,
“max_snapshot_bytes_per_sec”:“200mb”,
“max_restore_bytes_per_sec”:“200mb”,
“compress”: true }
}
’
⑥ 可以查看到刚才在旧集群备份的快照
curl -XGET http://10.10.77.104:9200/_snapshot/my_backup/snapshot_1
⑦ 恢复快照
curl -XPOST http://10.10.77.104:9200/_snapshot/my_backup/snapshot_1/_restore
⑧ 查看快照恢复情况
curl -XGET http://10.10.77.104:9200/snapshot_1/_recovery