创建共享目录

每个节点安装sshfs
1
2
yum install -y epel-release
yum -y install fuse-sshfs
选定一个备份目录做共享目录

例如我有ns0(10.1.1.0)、ns1(10.1.1.1)、ns2(10.1.1.2,主节点)三个节点,我选择ns2下的/home/dev/esbk目录做备份

1
2
3
# ns2下创建
mkdir /home/dev/esbk
chmod -R 777 esbk

其他所有节点挂载目录
1
2
3
4
5
6
7
8
9
10
# ns0、ns1下操作
sshfs root@10.1.1.2:/home/dev/esbk /home/dev/esbk -o allow_other

# 在ns0、ns1测试运行es的用户(我的为dev)是否有对共享目录的写的权限
sudo -u dev touch /home/dev/esbk/test

# 在ns2上/home/dev/esbk查看有没有成功创建test文件

# 如果要删除共享目录需要卸载挂载目录
fusermount -u filename

修改所有节点的elasticsearch.yml文件

1
2
3
4
vim es目录/config/elasticsearch.yml
# 添加path.repo配置共享仓库的位置
path.repo: ["/home/dev/esbk"]
# 保存后重启es

创建了共享目录后在共享目录下为集群创建共享仓库

1
2
3
4
5
6
7
8
9
10
PUT http://10.1.1.2:9200/_snapshot/my_backup 
{
"type": "fs",
"settings": {
"location": "/home/elk/es_backup",
"compress": true, // 是否压缩,可选
"max_snapshot_bytes_per_sec" : "50mb", // 速度限制,默认为20mb,可选
"max_restore_bytes_per_sec" : "50mb"
}
}

备份索引数据

1
2
3
4
5
6
7
8
# 所有索引备份

PUT http://10.1.1.2:9200/_snapshot/my_backup/备份名

# 指定索引备份
{
"indices": "index1, index2"
}

查看备份状态

1
GET http://10.1.1.2:9200/_snapshot/my_backup/备份名/_status

查看备份列表

1
GET http://10.1.1.2:9200/_snapshot/my_backup/_all

删除备份

1
DELETE http://10.1.1.2:9200/_snapshot/my_backup/备份名

恢复数据

1
2
3
4
5
6
7
8
9
10
11
# 全部恢复
# wait_for_completion=true 为阻塞运行,可选
POST http://10.1.1.2:9200/_snapshot/my_backup/备份名/_restore?wait_for_completion=true

# 指定恢复index1索引
{
"indices": "index1",
// 如需重命名,则增加
"rename_pattern": "index1", // 需改名的原索引名
"rename_replacement": "index2" // 改名后索引名
}

查看恢复状态

1
2
3
4
5
GET http://10.1.1.2:9200/_recovery/
# percent字段为恢复百分比

# 如需取消一个恢复
DELETE http://10.1.1.2:9200/恢复后的索引名