数据备份是一个必须要考虑的问题,官网提供了 snapshot 接口来备份和恢复数据。

先来看看官方说明

如果ES是集群,那么需要使用共享存储,支持的存储有:

a、shared file system

b、S3

c、HDFS

我使用的是第一种,NFS共享文件系统。这里要说一下权限问题,ES一般是使用 elasticsearch 用户启动的,要保证共享目录对 elasticsearch 用户有读写权限,要不然创建仓库和快照的时候会报访问拒绝500错误。

在nfs-server上导出共享目录的权限配置,这里将所有连接用户都压缩为root权限:

# vim /etc/exports
/data02/es 192.168.3.56(rw,sync,all_squash,anonuid=0,anongid=0,no_subtree_check) 192.168.3.57(rw,sync,all_squash,anonuid=0,anongid=0,no_subtree_check) 192.168.3.49(rw,sync,all_squash,anonuid=0,anongid=0,no_subtree_check) # /etc/init.d/nfs-kernel-server reload

1、创建挂载目录,并给予权限

# mkidr -pv /nh/esbk/my_backup
# chmod 755 /nh/esbk/
# chown elasticsearch.elasticsearch /nh/esbk/

2、挂载共享目录

# vim /etc/fstab
192.168.3.97:/data02/es /nh/esbk/my_backup nfs defaults 0 0 # mount -a
# df -hT

3、修改ES的配置文件,添加仓库路径,重启服务

# vim /etc/elasticsearch/elasticsearch.yml
path.repo: ["/nh/esbk"] # /etc/init.d/elasticsearch restart

4、注册快照仓库到ES,这里是在 kibana 的 Dev Tools 上操作的,也可以使用 curl 发起请求。

Before any snapshot or restore operation can be performed, a snapshot repository should be registered in Elasticsearch. 

After all nodes are restarted, the following command can be used to register the shared file system repository with the name my_backup.
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"compress": true,
"location": "/nh/esbk/my_backup"
}
}

5、查看仓库信息

GET /_snapshot/my_backup

# curl -u elastic -XGET 'http://192.168.3.49:9200/_snapshot/my_backup?pretty'
{
"my_backup" : {
"type" : "fs",
"settings" : {
"compress" : "true",
"location" : "/nh/esbk/my_backup"
}
}
}

6、创建快照

A repository can contain multiple snapshots of the same cluster.
Snapshots are identified by unique names within the cluster.
A snapshot with the name snapshot_1 in the repository my_backup can be created by executing the following command.
PUT /_snapshot/my_backup/snapshot_1

这里发起请求后,会立马返回 true,并在后台执行操作。

如果想等待执行完成之后再返回,可以加一个参数:

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true

7、查看刚才创建的快照的信息

Once a snapshot is created information about this snapshot can be obtained using the following command.
GET /_snapshot/my_backup/snapshot_1

{
"snapshots": [
{
"snapshot": "snapshot_1",
"uuid": "xSMRNVMIRHmx_qlhX5fqfg",
"version_id": 5040199,
"version": "5.4.1",
"indices": [
".monitoring-kibana-2-2017.07.05",
".monitoring-kibana-2-2017.07.11",
"zixun-nginx-access-2017.07.12",
".monitoring-logstash-2-2017.07.07",
".monitoring-kibana-2-2017.07.07",
"filebeat-2017.07.07",
".watcher-history-3-2017.07.04",
".watcher-history-3-2017.07.07",
".monitoring-es-2-2017.07.05",
".kibana",
".monitoring-data-2",
".watcher-history-3-2017.06.27",
".monitoring-logstash-2-2017.07.10",
".monitoring-kibana-2-2017.07.10",
".monitoring-es-2-2017.07.08",
".monitoring-logstash-2-2017.07.12",
".monitoring-es-2-2017.07.10",
".watcher-history-3-2017.07.06",
".monitoring-kibana-2-2017.07.09",
".watcher-history-3-2017.07.12",
".watcher-history-3-2017.07.03",
".monitoring-alerts-2",
".monitoring-logstash-2-2017.07.08",
".watcher-history-3-2017.07.01",
".watcher-history-3-2017.07.11",
".watcher-history-3-2017.07.05",
".watcher-history-3-2017.06.29",
".watcher-history-3-2017.06.28",
".monitoring-kibana-2-2017.07.08",
".security",
".monitoring-logstash-2-2017.07.11",
".monitoring-es-2-2017.07.11",
".watcher-history-3-2017.06.30",
".triggered_watches",
".watcher-history-3-2017.07.08",
".monitoring-es-2-2017.07.12",
".watcher-history-3-2017.07.09",
".monitoring-es-2-2017.07.09",
".monitoring-kibana-2-2017.07.12",
".monitoring-kibana-2-2017.07.06",
".watcher-history-3-2017.07.10",
"test",
".monitoring-es-2-2017.07.07",
".monitoring-logstash-2-2017.07.09",
".watches",
".monitoring-es-2-2017.07.06",
".watcher-history-3-2017.07.02"
],
"state": "SUCCESS",
"start_time": "2017-07-12T04:19:08.246Z",
"start_time_in_millis": 1499833148246,
"end_time": "2017-07-12T04:20:04.717Z",
"end_time_in_millis": 1499833204717,
"duration_in_millis": 56471,
"failures": [],
"shards": {
"total": 59,
"failed": 0,
"successful": 59
}
}
]
}

列出一个仓库里的所有快照

All snapshots currently stored in the repository can be listed using the following command:
GET /_snapshot/my_backup/_all

8、删除一个快照

A snapshot can be deleted from the repository using the following command:
DELETE /_snapshot/my_backup/snapshot_1

9、删除一个仓库

A repository can be deleted using the following command:
DELETE /_snapshot/my_backup

10、恢复一个快照(支持恢复部分数据以及恢复过程中修改索引信息,具体细节参考官方文档)

POST /_snapshot/my_backup/snapshot_1/_restore

11、查看快照状态信息(比如正在创建或者创建完成等)

a、列出所有当前正在运行的快照以及显示他们的详细状态信息

A list of currently running snapshots with their detailed status information can be obtained using the following command.
GET /_snapshot/_status

b、查看指定仓库的正在运行的快照以及显示他们的详细状态信息

GET /_snapshot/my_backup/_status

c、查看指定快照的详细状态信息即使不是正在运行

If both repository name and snapshot id are specified, this command will return detailed status information for the given snapshot even if it’s not currently running:
GET /_snapshot/my_backup/snapshot_1/_status

d、支持同时指定多个快照ID查看多个快照的信息

Multiple ids are also supported.
GET /_snapshot/my_backup/snapshot_1,snapshot_2/_status

12、如果要停止一个正在运行的snapshot任务(备份和恢复),将其删除即可。

最新文章

  1. nginx ssl 更换问题
  2. Python之Scrapy爬虫框架安装及简单使用
  3. 在RedHat.Enterprise.Linux_v6.3系统中安装Oracle_11gR2教程
  4. SQLAlchemy Core中的异常及事务处理样码
  5. HDU 1754 I Hate It (线段树)
  6. 关于js中的几个小问题。
  7. uva 1629
  8. 在RHEL5.4 设置KVM(虚拟机)通过桥接器上网
  9. PHP获取IP及地区信息(纯真IP数据库)
  10. TCP/IP入门学习(2)---OSI分层
  11. Windows上安装Xampp后通过命令行进入MariaDB
  12. RDLC报表系列(五) 简单的图表-柱状图
  13. php随笔7-thinkphp OA系统 JS 文本框输入实时控制字数
  14. Swoole笔记(三)
  15. 火狐html5拖拽 弹出新页面解决办法
  16. Cocos2d-X使用CCAnimation创建动画
  17. iOS 多线程 简单学习NSThread NSOperation GCD
  18. jquery取每个li元素下的第三个a元素
  19. 【SP26073】DIVCNT1 - Counting Divisors 题解
  20. [转]ASP.NET Core: Static Files cache control using HTTP Headers

热门文章

  1. Ubuntu 16.04安装tensorflow_gpu的方法
  2. ubuntu HackRF One相关环境搭建
  3. Vmware vSphere 开启嵌套虚拟化
  4. [文章存档]如何检测 Azure Web 应用沙盒环境文件系统存储量
  5. 简介几种系统调用函数:write、read、open、close、ioctl
  6. JavaScript学习(1)之JavaScript基础
  7. Paxos共识算法
  8. NIO_通道之间传输数据
  9. CentOS 6.7 安装配置 nagios
  10. Spring下使用开发webservice