欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Elasticsearch:使用Snapshot 进行数据备份迁移 - 实战

程序员文章站 2024-03-21 11:00:58
...

  最近在做 Elasticsearch 集群的内容,除了集群的规划问题,优化问题。在elasticsearch 升级的时候,做数据迁移也是一件头疼的事。自己做遇到了很多的坑,慢慢的填。比方说集群在配置安全认证以后,如何跨集群同步数据。这个问题在另外一篇文章中呈现。

   而这篇文章主要是通过 Snapshot 的方式进行数据的迁移。

   以下内容是我做的真实案例,以及我在做的时候遇到的一些问题,以及我自己的一些疑问。

   首先说一下,我这个案例做是一台机器上两个节点形成了集群。

 

# # 首先这我问题,我也没涉及过,于是就先从网上找了一些数据迁移方面的文章

 看到最多的就是这篇文章:https://blog.csdn.net/star1210644725/article/details/106774931

  这篇文章我也转载了,刚开始看的时候觉得挺好 ,但是后边做起来还是有挺多坑的。可以看看,我就是看不太明白,所以才找了其他是文章来看的。跟着下边的做就可以了。

 这篇文章里边提到了 fs 文件系统,我还不太明白,可能是需要搭建共享文件系统。我在下边的案例里边没有用,就是一个文件夹。来存放快照。

 

# #  下边是我跟着做的案例,跟着一步一步的做,就没问题

 

# # 准备测试数据

运行起来我们的Kibana:

Elasticsearch:使用Snapshot 进行数据备份迁移 - 实战

我们分别点击上面的1和2处:

Elasticsearch:使用Snapshot 进行数据备份迁移 - 实战

点击上面的“Add data”。这样我们就可以把我们的kibana_sample_data_logs索引加载到Elasticsearch中。

GET _cat/indices/kibana_sample_data_logs

Elasticsearch:使用Snapshot 进行数据备份迁移 - 实战

# #  注册repository

首先我们在我们的电脑上创建一个如下的目录:

/shared_folder/my_repo

我们在termimal中打入如下的命令:

mkdir -p shared_folder/my_repo/
    $ pwd
    /Users/liuxg/shared_folder
    bogon:shared_folder liuxg$ ls -al
    drwxr-xr-x   2 liuxg  staff    64 Nov 13 13:23 my_repo

将以下path.repo属性添加到我们运行的所有node的elasticsearch.yml文件中:

path.repo: /Users/liuxg/shared_folder/my_repo

注意,针对你的情况,你需要改动这里的path路径。

然后启动我们的Elasticsearch及Kibana。紧接着,我们在Kibana console中打入如下的命令:

    PUT _snapshot/my_local_repo
    {
      "type": "fs",
      "settings": {
        "location": "/Users/liuxg/shared_folder/my_repo"
      }
    }

注意这里的location是根据我自己的电脑的路径来设置的。你需要根据自己实际的路径进行修改。在这里my_local_repo是我们的repository名称。

接下来,我们打入如下的命令来对我们的kibana_sample_data_logs索引进行snapshot:

    PUT _snapshot/my_local_repo/snapshot_1
    {
      "indices": "kibana_sample_data_logs",
      "ignore_unavailable": true,
      "include_global_state": true
    }

Elasticsearch:使用Snapshot 进行数据备份迁移 - 实战

我们可以通过如下的命令来查看snapshot:

GET _snapshot/my_local_repo/_all

Elasticsearch:使用Snapshot 进行数据备份迁移 - 实战

我们可以在右边看到snapshot_1出现在列表之中,说明我们已经成功地创建了这个snapshot。

我们接下来可以通过如下的命令来删除kibana_sample_data_logs索引:

DELETE kibana_sample_data_logs

这样我们彻底地删除了这个索引。那么我们该如何把之前备份的数据恢复回来呢?

在Kibana中打入如下的命令:

    POST _snapshot/my_local_repo/snapshot_1/_restore
    {
      "indices": "kibana_sample_data_logs",
      "ignore_unavailable": true,
      "include_global_state": false
    }

Elasticsearch:使用Snapshot 进行数据备份迁移 - 实战

在执行完上面的命令后,我们可以通过如下的命令来查看恢复后的kibana_sample_data_logs索引:

GET kibana_sample_data_logs/_count

显然我们已经成功地恢复了我们之前备份的数据。

这个时候,如果我们去到我们的snapshot文件目录,我们可以看到:

    $ pwd
    /Users/liuxg/shared_folder/my_repo
    bogon:my_repo liuxg$ ls
    index-0				meta-TzygGpJ1SOK5yJdsmc1lng.dat
    index.latest			snap-TzygGpJ1SOK5yJdsmc1lng.dat
    indices

显然在文件目录中,已经有新生产的文件了。

相关标签: Elasticsearch