近期由于elasticsearch的版本升级,需要研究下elasticsearch的快照(snapshot)和恢复(restore)功能。
 
  先说下背景,目前环境采用的是elasticsearch1.0版本,如果升级2.2版本,数据必须进行迁移,看官方文档给的建议是采用snapshot和restore的api操作。
 
  同时说下elasticsearch2.2版本的启动不可以采用root账号,必须建立单独的账号才可以启动,否则会报以下错误
  Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
 
  接下来说下创建备份的过程(es1.0版本的操作):
 
        1. 确保索引数据保存到硬盘中,运行以下命令:

curl -X 'localhost:9200/_flush'

        
       2. 创建备份的目录,如"/opt/es_backups/my_backup",用户需要对该目录拥有读写权限
 
       3. 创建一个仓库(repository),命令:
    curl -X PUT 'localhost:9200/_snapshot/my_backup' -d '        
    {
              "type": "fs",
              "settings": {
              "compress": "true",
              "location": "/opt/es_backups/my_backup"
              }
         }' 
    4. 备份索引,命令:
    curl -X PUT 'localhost:9200/_snapshot/my_backup/snapshot_1?waif_for_comletion=true'

    5. 查看备份状态,命令:

    curl -X GET 'localhost:9200/_snapshot/my_backup/snapshot_1?pretty'

    curl -X GET 'localhost:9200/_snapshot/my_backup/snapshot_1/_status?pretty'

  

  恢复备份的过程(es2.2版本的操作):

    1. 停止es1.0集群的运行,使用kill命令杀掉es相关进程
 
    2. es2.2版本还原1.0版本备份最重要的就是创建1.0版本备份目录相同的仓库,但是从es1.6开始,创建仓库,必须修改elasticsearch.yml文件,增加结点"path.repo",同时,es2.2的运行用户也必须有备份目录的读写权限。
     elasticsearch.yml文件中增加的节点内容为:

    path.repo: ["/opt/es_backups"]

     运行创建仓库的命令,和上面备份第3点的命令完全一致。
 
    3. 恢复备份,命令如下:

    curl -X POST 'localhost:9200/_snapshot/my_backup/snapshot_1/_restore?pretty'

 
    4. 查看恢复的状态:

      curl -X GET 'localhost:9200/_recovery?pretty'

 
  参考内容:
  Scripting and Security:https://www.elastic.co/blog/scripting-security

elasticsearch1.0 升级2.2的数据备份和恢复的更多相关文章

  1. InfluxDB数据备份和恢复方法,支持本地和远程备份

    本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 17 部分: InfluxDB学习之InfluxDB的基本概念 InfluxDB学习之InfluxDB的基本操作 Influ ...

  2. tableau server 数据备份及恢复

    tableau server 数据备份及恢复 一.数据备份 1> win+r,进入到dos命令行模式 2> 进入到tableau server的bin路径下 cd C:\Program F ...

  3. redis入门(15)redis的数据备份和恢复

    redis入门(15)redis的数据备份和恢复

  4. Salesforce 数据备份和恢复小知识

    数据备份的类型 在Salesforce中可以使用多种API进行数据备份,它们是: REST API SOAP API Buik API Metadata API 数据备份有三种选择: 完全备份(Ful ...

  5. innobackupex不停库的数据备份并恢复到别的服务器上【转】

    1.innobackupex原理: 备份原理 1).首先会开启一个后台检测进程,实时检测myql redo的变化,一旦发现redo中有新日志写入,立即将日志记入后台日志文件xtrabackup_log ...

  6. Oracle 数据备份、恢复以及导入时表空间不存在的解决方案

    一.数据备份(导出) 1.exp命令导出dmp文件(exp -help查看帮助信息) 命令:exp username/userpasswd@192.168.99.199/orcl file=C:\jd ...

  7. HBase数据备份及恢复(导入导出)的常用方法

    一.说明 随着HBase在重要的商业系统中应用的大量增加,许多企业需要通过对它们的HBase集群建立健壮的备份和故障恢复机制来保证它们的企业(数据)资产.备份Hbase时的难点是其待备份的数据集可能非 ...

  8. mysql数据备份及恢复

    备份工具 mysqldump mysqldump是mysql和mariadb上最好的备份工具之一,免费开源. mysqldump 首先查询每个数据库和每个表的结构与数据,然后把查出的所有内容导出到文本 ...

  9. 涂抹mysql笔记-数据备份和恢复

    <>物理备份和逻辑备份<>联机备份和脱机备份<>本地备份和远程备份<>完整备份和增量备份<>完整恢复和增量恢复<>复制表相关文件 ...

随机推荐

  1. 获取oracle 表字段,表名,以及主键之类等等的信息。

    获取表名:  Oracle的user_talbes用于记录了用户表信息. select * from user_tables  获取某个表的字段: USER_TAB_COLS中记录了用户表的列信息.下 ...

  2. C语言 单引号和双引号的区别

    最近的C语言课在教字符串,貌似N多同学搞不清楚单引号和双引号的区别,有人还以为在C语言里用哪个都可以...其实C语言中的单引号和双引号含义是一点也不一样滴... 1.含义不同. 用单引号引起的一个字符 ...

  3. 怎样取出cobbler kopts中设置的参数?

    Is there a way to find out with what parameters did the kernel boot? For example if I specify noexec ...

  4. 【Python】Django 时间字段 最佳实践

    . python datetime from datetime import datetime datetime.now() datetime.utcnow() from datetime impor ...

  5. 【Hibernate】Hibernate系列2之Session详解

    Session详解 2.1.概述-一级缓存 2.2.操作session缓存方法 2.3.数据库隔离级别 2.4.持久化状态 2.5.状态转换 2.6.存储过程与触发器

  6. ios如何生成crash报告

    #include <signal.h> #include <execinfo.h> void OnProcessExceptionHandler(int sigl) { do ...

  7. iOS __block类型变量作用域

    看下图 在c语言中,2个独立的函数是不可能互相访问局部变量的,但是__block提供了这个功能,它不单单能读变量,还可以对变量进行写!上图说明,block获得了i最后的真实值5,没有只取得0,这都是& ...

  8. 使用wkhtmltopdf实现HTML转PDF的解决方案

    最近,项目需要将HTML页面转换为PDF文件,所以就研究了下HTML转PDF的解决方案,发现网上比较流行的解决方案有3种: (1)iText (2)Flying Saucer (3)wkhtmltop ...

  9. 或许您还不知道的八款Android开源游戏引擎

    很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于iPhone下有诸如Cocos2d-iphone之类的免费游戏 ...

  10. 利用gitbash上传项目到github

    GitHub主要是用作基于Git的分布式版本管理系统的库,可以保存和管理自己的代码,而且主要用作代码的合作开发.不过对于我来说,Git控制系统还比较难以掌握,或者开发小系统还不太用得着,因此我把Git ...