Skip to content

ElasticSearch-单节点迁移到集群

安装NFS

服务端配置

在原来的节点上安装NFS服务,并把快照目录挂载到NFS

安装NFS服务

bash
yum install nfs-utils

创建挂载点

bash
mkdir -p /mnt/elasticsearch_backups
chown -R 1000:root /mnt/elasticsearch_backups
chmod 775 /mnt/elasticsearch_backups

编辑NFS导出文件 /etc/exports

bash
vim /etc/exports
/mnt/elasticsearch_backups *(rw,sync,no_subtree_check,no_root_squash)

启动NFS服务

bash
systemctl restart nfs-server

检查是否挂载成功

bash
showmount -e 
# 正常会显示如下
#Export list for prod01:
#/mnt/elasticsearch_backups 172.16.0.0/20

客户端配置

在新的节点上安装NFS客户端

注意

每个新节点都需要操作

bash
yum install -y nfs-utils

创建本地挂载点

bash
mkdir -p /mnt/elasticsearch_backups
mount -t nfs 172.16.0.7:/mnt/elasticsearch_backups /mnt/elasticsearch_backups

🚚卸载挂载点

bash
umount /mnt/elasticsearch_backups

备份快照

在原集群上备份快照

修改 config/elasticsearch.yml 配置文件,增加仓库路径配置

yaml
path.repo: ["/mnt/elasticsearch_backups"]

docker容器,修改此参数,然后删除容器后,重新创建

bash
environment:
  - path.repo=/mnt/elasticsearch_backups
volumes:
  - /mnt/elasticsearch_backups:/mnt/elasticsearch_backups

创建快照仓库

bash
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/elasticsearch_backups",
    "compress": true,
    "max_snapshot_bytes_per_sec": "50mb",
    "max_restore_bytes_per_sec": "50mb"
  }
}

创建快照

先小范围试试,创建只包含特定索引的快照

bash
POST /_snapshot/my_backup/snapshot_wxcp_202308
{
  "indices": "gupaoedu-wxcp-msg-2023-08-*",
  "ignore_unavailable": true,
  "include_global_state": false
}

查看快照进度

image-20250428215409955

恢复快照

注意

等快照完成后,到目标集群中创建快照仓库

bash
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/elasticsearch_backups",
    "readonly": true,
    "max_snapshot_bytes_per_sec": "50mb",
    "max_restore_bytes_per_sec": "50mb"
  }
}

测试恢复快照

bash
POST /_snapshot/my_backup/snapshot_wxcp_202308/_restore
{
  "indices": "gupaoedu-wxcp-msg-2023-08-*",
  "ignore_unavailable": true,
  "include_global_state": false
}

查看恢复情况

image-20250428220500112

按年维度恢复

恢复成功,下面开始按年维度恢复索引快照。

bash
GET /gupaoedu-wxcp-msg-2023*/_stats/store?human
bash
POST /_snapshot/my_backup/snapshot_wxcp_2023
{
  "indices": "gupaoedu-wxcp-msg-2023*",
  "ignore_unavailable": true,
  "include_global_state": false
}
bash
POST /_snapshot/my_backup/snapshot_wxcp_2024
{
  "indices": "gupaoedu-wxcp-msg-2024*",
  "ignore_unavailable": true,
  "include_global_state": false
}
bash
POST /_snapshot/my_backup/snapshot_wxcp_2025
{
  "indices": "gupaoedu-wxcp-msg-2025*",
  "ignore_unavailable": true,
  "include_global_state": false
}

在目标集群上,刷新快照列表。

image-20250428223645671

如果刷新没有出现快照,可以在目标集群上,先删除快照仓库,然后重新创建一下
bash
DELETE /_snapshot/my_backup
bash
PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/elasticsearch_backups",
    "readonly": true,
    "max_snapshot_bytes_per_sec": "50mb",
    "max_restore_bytes_per_sec": "50mb"
  }
}

按年度开始恢复

bash
POST /_snapshot/my_backup/snapshot_wxcp_2023/_restore
{
  "indices": "gupaoedu-wxcp-msg-2023-*",
  "ignore_unavailable": true,
  "include_global_state": false
}
bash
POST /_snapshot/my_backup/snapshot_wxcp_2024/_restore
{
  "indices": "gupaoedu-wxcp-msg-2024-*",
  "ignore_unavailable": true,
  "include_global_state": false
}
bash
POST /_snapshot/my_backup/snapshot_wxcp_2025/_restore
{
  "indices": "gupaoedu-wxcp-msg-2025-*",
  "ignore_unavailable": true,
  "include_global_state": false
}

人生感悟