1.背景说明:
两个ES集群版本:5.6.8
旧集群:ERQIES
三个节点:192.168.185.70,192.168.185.71,192.168.185.72
新集群:gzescluster
五个节点:10.181.92.184,10.181.92.185,10.181.92.186,10.181.92.187,10.181.92.188
2.修改elasticsearch.yml配置文件并重启集群
先禁用两个集群的自动分配:
在两个集群其中一台上面执行即可:
关闭:#curl -XPUT http://127.0.0.1:9200/_cluster/settings -d ‘{ “transient”: {“cluster.routing.allocation.enable”: “none”} }’
开启:#curl -XPUT http://127.0.0.1:9200/_cluster/settings -d ‘{ “transient”: {“cluster.routing.allocation.enable”: “all”} }’
修改elastticsearch.yml配置文件指定snapshot的共享目录:
旧集群指定:/data/backups/my_backup
#mkdir -p /data/backups/my_backup
修改所属群组使得es可以写入
#chown -R eleasticsearch:elasticsearch /data/backups/my_backup
#chmod 777 /data/backups/my_backup
新集群指定:/cloud/data01/backup
#chown -R eleasticsearch:elasticsearch /cloud/data01/backup
#chmod 777 /cloud/data01/backup
重启两台es集群,先杀掉es进程(tips:一台一台重启比较集群恢复比较快一点)
#su elasticsearch
#bin/elasticsearch -d
3.准备安装nfs共享目录的软件,挂载共享目录
先将每台机器上面安装nfs,执行:
#yum -y install nfs-utils
配置nfs服务器,这里选机器(10.181.92.184)来作为共享文件的服务器
修改所有机器的nfs配置文件指定Domain为10.181.92.184
#vim /etc/idmapd.conf
配置服务器(10.181.92.184)的共享目录和共享的网段范围:
#vim /etc/exports
将本机的/cloud/data02/nfs_data共享目录,开放给网段上面的主机访问,允许这些主机
进行写,使用者如果以root身份登入,那么使用者对这个目录具有root权限
开启nfs服务,并重启nfs服务
#systemctl enable –now rpcbind nfs-server
#service nfs-server restart
设置防火墙如果防火墙有开的话
#firewall-cmd –add-service=nfs –permanent
客户端安装nfs完成,配置domain后设置挂载目录
旧集群的机器挂载:
#mount -t nfs 10.181.92.184:/cloud/data02/nfs_data /cloud/data01/backup
新集群的机器挂载:
#mount -t nfs 10.181.92.184:/cloud/data02/nfs_data /data/backups/my_backup
df -TH查看新旧集群挂载情况:
要在系统重新启动时进行自动挂载#vim /etc/fstab
4.建立es索引快照备份
以下命令在kibana里面执行
#先建立旧集群索引快照库:
PUT /_snapshot/my_backup
{“type”: “fs”,
”settings”: {
”compress”: true,
”location”: “/data/backups/my_backup”
}
}
#新集群群索引快照库:
PUT /_snapshot/my_backup
{
”type”: “fs”,
”settings”: {
”compress”: true,
”location”: “/cloud/data01/backup”
}
}
#旧集群指定备份库的索引和备份名称
PUT /_snapshot/my_backup/snapshot_20220502?wait_for_completion=true
{
”indices”:”hnscan_business_t_bs_day_chk_ene_drv,hnscan_business_t_bs_day_ene_drv”,
”ignore_unavailable”: true,
”include_global_state”: false
}
#旧集群查看以及备份好的索引名称
GET /_snapshot/my_backup/snapshot_20220502
5.拷贝es快照备份(如果需要的话,这里免了因为共享目录都是在同一台机器上面)
6.恢复快照备份
# 查看所有快照信息
GET /_snapshot/my_backup/_all
#查看快照库里面状态
GET /_snapshot/my_backup/snapshot_20220502/_status
#恢复快照库里面的索引
GET /snapshot_20220502/_recovery
# 从快照信息中恢复(注意要先把已有的索引关闭了)
POST /_snapshot/my_backup/snapshot_20220502/_restore
{
”indices”:”hnscan_business_t_bs_day_ene_drv,hnscan_business_t_bs_day_chk_ene_drv”
}
#关闭索引
POST hnscan_business_t_bs_day_chk_ene_drv/_close?pretty
POST hnscan_business_t_bs_day_ene_drv/_close?pretty
#打开索引
POST hnscan_business_t_bs_day_chk_ene_drv/_open?pretty
POST hnscan_business_t_bs_day_ene_drv/_open?pretty
注意:快照恢复索引是全量覆盖操作。旧集群索引的分片数和新集群索引的分片数必须保持一致才能恢复操作。
参考资料:
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/modules-snapshots.html
https://www.fwqwd.com/6297.html
https://blog.csdn.net/wzz87/article/details/106896347/