ES的冷备

Elasticsearch的冷备

Es集群冷备

elasticsearch冷备官方文档

安装NFS和RPC

  • 将es集群的所有机器作为客户端,备份的机器作为服务端
sudo yum install nfs-utils rpcbind
  • 开启自启服务
sudo chkconfig nfs on 
sudo chkconfig rpcbind on
  • 启动NFS和RPC服务
service nfs start
service rpcbind start 

配置服务端

  • 创建共享目录(共享目录自定义)
mkdir share_file
  • 编辑/etc/exports配置共享路径及权限
sudo vim /etc/exports
/home/xxx/share_file *(insecure,rw)

注:(星号表示所有ping通的IP主机都可访问,secure NFS通过1024以下的安全TCP/IP端口发送,insecure NFS通过1024以上的端口发送。Ro 该主机对该共享目录有只读权限,Rw 该主机对该共享目录有读写权限)

  • 重新挂载
sudo exportfs -r
  • 重启NFS服务,好像不用重启也生效了,可以先看看是否挂载成功0
sudo service nfs restart
  • 显示NFS服务器输出的目录列表(即共享目录列表)showmount -e 【IP】
showmount -e localhost 

客户端配置

  • 创建挂载目录(可自定义,如果不手动创建也行,在挂载时会自动创建)
mkdir mount_file
  • 查看服务端的共享目录
showmount -e 【服务端IP】
  • NFS v3.0 挂载
mount -t nfs -o vers=3 【服务端IP】:【服务端共享目录】 【客户端共享目录】 -o proto=tcp -o nolock 
  • 查看挂载路径
df -h
  • 测试
  1. 服务端(share_file路径下)
vi test_nfs

nfs successful!!!
  1. 客户端(mount_file路径下)
ls
cat test_nfs(显示与服务端内容一致,表示配置成功)

Elasticsearch配置

  • 每个节点的elasticsearch.yml的配置
vi elasticsearch.yml
path.repo: /home/sandy/mount_file
  • 创建仓库
PUT /_snapshot/【厂库名称】
{
   "type":"fs",
   "settings":{
     "compress":true,
     "location":"/home/sandy/mount_file,
     "chunk_size": "5g",  				 # 做快照的时候大文件可以被分解成几块的数
     "max_restore_bytes_per_sec":"20mb",  # 每个节点恢复数据的最高速度限制. 默认是 40mb/s
     "max_snapshot_bytes_per_sec":"20mb", # 每个节点做快照的最高速度限制. 默认是 40mb/s
  }
}
  • 获取仓库信息
GET /_snapshot/【厂库名称】
GET /_snapshot/repo*,*【厂库名称中的字符】*     通配符获取
GET /_snapshot/_all              			获取所有
  • 删除仓库
DELETE /_snapshot/【厂库名称】
  • 创建快照,备份多个索引索引,wait_for_completion参数标识此请求是否需要等待快照创建完成,默认立即返回,不等待快照创建结束(备份无需去索引副本,“indices”: “【备份的索引名称1, 2 ,3】”)
PUT /_snapshot/【厂库名称】/【快照名称】?wait_for_completion=true
{
  "indices": "【备份的索引名称】",
  "ignore_unavailable": true,
  "include_global_state": false
}

  • 监控快照进度
GET _snapshot/【厂库名称】/【快照名称】/_status

{
  "snapshots": [
    {
      "snapshot": "report_standby",
      "repository": "es_219_standby",
      "uuid": "lPi5jLbdSBKB3RJ42LADoA",
      "state": "STARTED", 					注:一个正在运行的快照会显示 IN_PROGRESS 作为状态
      "shards_stats": {
        "initializing": 0,
        "started": 5,						注:这个特定快照有5个分片在传输(另外25个已经完成)
        "finalizing": 0,
        "done": 25,
        "failed": 0,
        "total": 30
      },
      ......
}

注:INITIALIZING–>分片在检查集群状态看看自己是否可以被快照。这个一般是非常快的,STARTED-->数据正在被传输到仓库,FINALIZING–>数据传输完成;分片现在在发送快照元数据,DONE–>快照完成,FAILED–>快照处理的时候碰到了错误,这个分片/索引/快照不可能完成了。检查你的日志获取更多信息。

  • 指定恢复的索引并重命名
POST /_snapshot/【厂库名称】/【快照名称】/_restore
{
    "indices": "【备份的索引名称】",
    "rename_pattern": "【备份的索引名称】",
    "rename_replacement": "【自定义恢复的索引名称】"
}


POST /_snapshot/【厂库名称】/【快照名称】/_restore
{
    "indices": "index_1",					    注:只恢复index_1索引,忽略快照中存在其余索引
    "rename_pattern": "index_(.+)",			    注:查找所提供的模式能匹配上的正在恢复的索引
    "rename_replacement": "restored_index_$1",  注:重命名成替代的模式( restored_index_1)
    "index_settings": {
    	"index.number_of_replicas": 0			注:设置恢复索引的副本数量为0
  	}
    
}

注: 和快照类似, restore 命令也会立刻返回,恢复进程会在后台进行。如果你更希望你的 HTTP 调用阻塞直到恢复完成,添加 wait_for_completion 标记

POST _snapshot/【厂库名称】/【快照名称】/_restore?wait_for_completion=true
  • 监控索引恢复信息
GET 【自定义恢复的索引名称】/_recovery 	 注:单独调用恢复指定索引

GET /_recovery/						 注:集群里所有索引,可能包括跟你的恢复进程无关的其他分片移动


{
  "restored_reports": {
    "shards": [
      {
        "id": 3,
        "type": "SNAPSHOT",					注:type表示恢复的本质;这个分片是在从一个快照恢复
        "stage": "INDEX",
        "primary": true,
        "start_time_in_millis": 1564540373531,
        "total_time_in_millis": 658566,
        "source": {							注:source哈希描述了作为恢复来源的特定快照和仓库
          "repository": "es_219_standby",
          "snapshot": "report_standby",
          "version": "5.5.1",
          "index": "reports_20190220"
        },
        "target": {
          "id": "vlp4d-CEQXSQhJ0eWdDpoQ",
          "host": "192.168.1.74",
          "transport_address": "192.168.1.74:9300",
          "ip": "192.168.1.74",
          "name": "node_74"
        },
        "index": {
          "size": {
            "total_in_bytes": 3376313133,
            "reused_in_bytes": 0,
            "recovered_in_bytes": 354191,
            "percent": "0.0%"			注:percent恢复的状态。分片目前已经恢复了0%的文件
          },
          "files": {
            "total": 116,
            "reused": 0,
            "recovered": 26,
            "percent": "22.4%"
          },
          "total_time_in_millis": 658550,
          "source_throttle_time_in_millis": 0,
          "target_throttle_time_in_millis": 0
        },
        "translog": {
          "recovered": 0,
          "total": 0,
          "percent": "100.0%",
          "total_on_start": 0,
          "total_time_in_millis": 0
        },
        "verify_index": {
          "check_index_time_in_millis": 0,
          "total_time_in_millis": 0
        }
      },
  • 取消一个恢复
DELETE /【自定义恢复的索引名称】

注:要取消一个恢复,你需要删除正在恢复的索引。 因为恢复进程其实就是分片恢复,发送一个 删除索引API 修改集群状态,就可以停止恢复进程,如果 【自定义恢复的索引名称】 正在恢复中,这个删除命令会停止恢复,同时删除所有已经恢复到集群里的数据

  • 删除快照
DELETE /_snapshot/【厂库名称】/【快照名称】
  • 查看仓库下的快照信息
GET /_snapshot/【厂库名称】/_all 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值