版本之间的迁移

在任何系统或软件中,当我们升级到更新版本时,我们需要按照几个步骤来维护应用程序设置,配置,数据和其他内容.这些步骤是使应用程序在新系统中稳定或维护数据完整性(防止数据损坏)所必需的.

以下是升级Elasticsearch : 的步骤;

  • 从 https://www.elastic.co/

  • 在UAT,E2E,SIT或DEV环境中测试非生产环境中的升级版本.

  • 如果没有数据备份,则无法回滚到以前的Elasticsearch版本.在升级到更高版本之前,建议使用数据备份.

  • 我们可以使用完全集群重启或滚动升级进行升级.滚动升级适用于新版本(适用于2.x和更高版本).当您使用滚动升级方法进行迁移时,没有服务中断.

<table class ="table table-bordered"style ="text-align:center ;>>

旧版本新版本升级方法
0.90.x2.x完全集群重启
1.x2.x完全群集重启
2.x2.y滚动升级(y> x )
  • 迁移前进行数据备份,并按照说明操作执行备份过程.快照和还原模块可用于进行备份.此模块可用于拍摄索引或完整集群的快照,并可存储在远程存储库中.

快照和还原模块

在开始备份过程之前,需要在Elasticsearch中注册快照存储库.

PUT /_snapshot/backup1
{
   "type": "fs", "settings": {
      ... repository settings ...
   }
}

注意 : 上面的文本是对 http://localhost:9200/_snapshot/backup1 的HTTP PUT请求(可以有远程服务器的IP地址而不是localhost).其余的文本是请求正文.您可以使用Windows中的fiddler2和其他Web工具轻松完成此操作.

我们使用共享文件系统(类型:fs)进行备份;它需要在每个主节点和数据节点中注册.我们只需要添加具有备份存储库路径的path.repo变量作为值.

在我们添加存储库路径之后,我们需要重新启动节点然后才能执行注册通过执行以下命令 :

PUT http://localhost:9200/_snapshot/backup1
{
   "type": "fs", "settings": {
      "location": "/mount/backups/backup1", "compress": true
   }
}

完全群集重启

此升级过程包括以下步骤 :

步骤1 : 禁用分片分配过程并关闭节点.

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.enable": "none"
   }
}

如果将0.90.x升级到1.x,请使用以下请求 :

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.disable_allocation": false,
      "cluster.routing.allocation.enable": "none"
   }
}

第2步 : 对Elasticsearch进行同步刷新 :

POST http://localhost:9200/_flush/synced

第3步 : 在所有节点上,终止所有弹性服务.

步骤4 : 在每个节点上执行以下操作 :

  • 在Debian或Red Hat节点中 :  rmp或dpkg可用于通过安装新软件包来升级节点.不要覆盖配置文件.

  • 在Windows(zip文件)或UNIX(tar文件)中 : 在不覆盖config目录的情况下解压缩新版本.您可以从旧安装中复制文件,也可以更改path.conf或path.data.

步骤5 : 从群集中的主节点(node.master设置为true且node.data设置为false的节点)开始再次启动节点.等待一段时间建立一个集群.您可以通过监视日志或使用以下请求 : 来检查;

GET _cat/health or http://localhost:9200/_cat/health
GET _cat/nodes or http://localhost:9200/_cat/health

第6步 : 使用 GET _cat/health 请求监视集群形成的进度并等待响应中的黄色,响应将是这样的 :

1451295971 17:46:11 elasticsearch yellow 1 1 5 5 0 0 5 0 - 50.0%

步骤7 : 通过使用以下请求 : 来启用在步骤1中禁用的分片分配过程;

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.enable": "all"
   }
}

如果要将0.90.x升级到1.x,请使用以下请求 :

PUT http://localhost:9200/_cluster/settings
{
   "persistent": {
      "cluster.routing.allocation.disable_allocation": true,
      "cluster.routing.allocation.enable": "all"
   }
}

滚动升级

与完全群集重启相同,但步骤3除外.此处,您停止一个节点并进行升级.升级后,重新启动节点并为所有节点重复这些节点.启用分片分配过程后,可以通过以下请求监视 :

GET http://localhost:9200/_cat/recovery