假设我们现在的集群已经创建完成我使用的版本是官方的elasticsearch 7.12
使用的操作系统是Windows Server 2012
第一步,修改配置文件elasticsearch712\config\elasticsearch.yml
正常只需要增加这一行即可
[C#] 纯文本查看 复制代码 path.repo: ["//172.16.31.129/temp_bak"]
然后重新启动你的集群
我们来分析一下他的意思
[C#] 纯文本查看 复制代码 //172.16.31.129/temp_bak
我们可以看到这是一个局域网的共享目录地址
[C#] 纯文本查看 复制代码 //172.16.31.129
是局域网的IP
是目录名称,由上可以得出,我们需要在局域网的某一台电脑上建立一个共享目录
由此总结一下
elasticsearch的共享目录可以是在局域网的任意一台电脑上。也就是说我们可以专门配置一台大硬盘的服务器做为备份服务器,甚至他都不需要有外网,只需要做存储即可。
第二步,创建数据仓库
数据仓库就是用来存储数备份数据的,每一次的备份都会存储进来,而且一个集群可以创建多个数据仓库,备份时可以备份到不同的数据仓库中来,但一般一个就行了,
elasticsearch 的备份原理是第一次备份全量备份,以后的备份只做更新,如果你没有修改和更新数据,备份文件就会很小,注意我说的是第一次,
不是第一个哦,这个意思就是说你删除了第一个备份,只剩余第一个之后的,下次再备份还是只备份更新的内容,不依赖于第一个备份
我们在这一步要创建一下数据仓库,我们先来看它所需要的代码如下
[C#] 纯文本查看 复制代码 PUT _snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "//172.16.31.129/temp_bak",
"max_snapshot_bytes_per_sec" : "1500mb", --共享地址路径,就是我们第一步时创建的共享目录地址
"max_restore_bytes_per_sec" : "1500mb" --当从仓库恢复数据时,这个参数控制什么时候恢复过程会被限流以保障你的网络不会被占满。默认是每秒 1500mb
}
}
我们来分析一下
[C#] 纯文本查看 复制代码 PUT _snapshot/my_backup
第一名告诉我们这是一个put请求,
创建数据仓库的关键词是_snapshot
仓库的名称是my_backup
[C#] 纯文本查看 复制代码
"location": "//172.16.31.129/temp_bak" -- 共享地址路径
这段配置文件是指定仓库使用的共享目录地址
[C#] 纯文本查看 复制代码 "max_snapshot_bytes_per_sec" : "1500mb"
这句的意思是当我们备份时使用的最大带宽
[C#] 纯文本查看 复制代码 "max_restore_bytes_per_sec" : "1500mb"
这句的意思是说我们还原是使用的最大带宽
总结:
我建议将带宽限制调整到最大,这样可以以最快的速度备份,数据量非常大的情况下这个参数非常重要,而我们用的都是内网,现在的交换机一般都是千兆的,设置大点没有问题
有人说这个会不会影响线上的查询和访问速度,当然不会,线上使用的是外网流量,和内网无关。当然也要考虑一下你的磁盘读写问题,这个其实我们都是操心过多的问题,ES本身可以处理的很好
建议备份时在访问量小的时间段进行。
第三步,备份常用的语句
1. 备份全部索引, 备份名称 [ all_2021_04_02_am]
[C#] 纯文本查看 复制代码 PUT _snapshot/my_backup /all_2021_04_02_am
2. 检查备份 all_2021_04_02_am的进度
[C#] 纯文本查看 复制代码 GET _snapshot/my_backup/all_2021_04_02_am/_status
3. 检查当前仓库中所有的备份信息
[C#] 纯文本查看 复制代码 GET _snapshot/my_backup/_all
4. 删除快照 [ all_2021_04_02_am ]
[C#] 纯文本查看 复制代码 DELETE _snapshot/my_backup/all_2021_04_02_am
5. 快照恢复 [ all_2021_04_02_am ]
[C#] 纯文本查看 复制代码 POST _snapshot/my_backup/all_2/all_2021_04_02_am/_restore --异步不影响查看
POST _snapshot/my_backup/all_2021_04_02_am/_restore?wait_for_completion=true -- 同步全部恢复完才可用,才可以看到数据信息
6. 监控快照[ all_2021_04_02_am]恢复情况 , 监控
[C#] 纯文本查看 复制代码 GET es_ckb_com/_recovery--单个索引的恢复情况
GET /_recovery/ --全部的恢复情况
|