elasticsearch集群snapshot备份

# 1 安装插件:
elasticsearch-plugin install repository-hdfs

# 2 移除插件:
elasticsearch-plugin remove repository-hdfs

# 3 查看es集群nodes
curl -XGET 'http://es02:9200/_cat/nodes?pretty'

# 4 查看es集群健康状况
curl -XGET 'http://es02:9200/_cluster/health?pretty'

# 5 查看es集群索引
curl -XGET 'es02:9200/_cat/indices?v'

# 6 在hdfs上创建snapshot仓库
curl -XPUT 'http://es02:9200/_snapshot/my_hdfs_repo?pretty' -d '
{
  "type": "hdfs",
  "settings": {
    "uri": "hdfs://es01:9000/",
    "path": "hadoop/respositories/my_hdfs_repo"
  }
}'

# 7 备份数据
curl -XPUT es02:9200/_snapshot/my_hdfs_repo/snapshot_2 -d'
{
    "indices": "my_index",
"ignore_unavailable": true,
"include_global_state": false,
"partial": true
}'
返回{"accepted":true}

indices值中可以加逗号隔开多个索引,ignore_unavailable设置为true会忽略掉不可用的index,include_global_state阻止cluster的全局state也作为snapshot的一部分被备份,
默认情况下,如果某个索引的部分primary shard不可用,那么会导致备份过程失败,那么此时可以将partial设置为true。

# 8 查看指定的备份:
curl -XGET 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1?pretty'
返回
{
  "snapshots" : [
    {
      "snapshot" : "snapshot_1",
      "uuid" : "K2N0N24sR0SqfiYiY9gdKA",
      "version_id" : 5050099,
      "version" : "5.5.0",
      "indices" : [
        "my_index"
      ],
      "state" : "SUCCESS",
      "start_time" : "2018-05-27T03:54:52.866Z",
      "start_time_in_millis" : 1527393292866,
      "end_time" : "2018-05-27T03:54:55.044Z",
      "end_time_in_millis" : 1527393295044,
      "duration_in_millis" : 2178,
      "failures" : [ ],
      "shards" : {
        "total" : 5,
        "failed" : 0,
        "successful" : 5
      }
    }
  ]
}


# 9 删除陈旧的备份快照:
curl -XDELETE 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1'

10、监控snapshotting的进度

使用wait_for_completion可以在前台等待备份完成,但是实际上也没什么必要,因为可能要备份的数据量特别大,难道还等待1个小时??
看着是不太现实的,所以一般还是在后台运行备份过程,然后使用另外一个监控api来查看备份的进度,
首先可以获取一个snapshot ID:GET _snapshot/my_backup/snapshot_3。如果这个snapshot还在备份过程中,
此时我们就可以看到一些信息,比如什么时候开始备份的,已经运行了多长时间,等等。然而,这个api用了跟snapshot一样的线程池去执行,
如果我们在备份非常大的shard,进度的更新可能会非常之慢。一个更好的选择是用_status API,GET _snapshot/my_backup/snapshot_3/_status,
这个api立即返回最详细的数据。这里我们可以看到总共有几个shard在备份,已经完成了几个,还剩下几个,包括每个索引的shard的备份进度:

curl -XGET 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1'

11、取消snapshotting备份过程

如果我们想要取消一个正在执行的snapshotting备份过程,比如我们发现备份时间过于长,希望先取消然后在晚上再运行,
或者是因为不小心误操作发起了一次备份操作,这个时候就可以运行下面这条命令:DELETE _snapshot/my_backup/snapshot_1。
也就是立即删除这个snapshot,这个命令会去取消snapshot的过程,同时将备份了一半的仓库中的数据给删除掉。

curl -XDELETE 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1'

#hadoop namenode格式化
hdfs namenode -format

#hadoop查看文件
hadoop dfs -ls /

#hadoop离开安全模式
hadoop dfsadmin -safemode leave

#hadoop修改用户所属的租
hadoop fs -chgrp -R hadoop /

猜你喜欢

转载自blog.csdn.net/fantasticqiang/article/details/80468419