ES索引备份还原

简介: es数据出于线上数据安全考虑,对于es已有的索引数据可以进行安全备份,通常可以将es备份到共享文件目录或者一些其它的数据存储的文件系统eg:HDFS、Amazon S3、Azure Cloud。备份会生成索引的快照存储到指定的仓库路径下,当需要进行数据还原的时候,就可以通过访问备份还原的接口快速实现数据还原。

ES索引备份还原


一、规划

es数据出于线上数据安全考虑,对于es已有的索引数据可以进行安全备份,通常可以将es备份到共享文件目录或者一些其它的数据存储的文件系统eg:HDFS、Amazon S3、Azure Cloud。备份会生成索引的快照存储到指定的仓库路径下,当需要进行数据还原的时候,就可以通过访问备份还原的接口快速实现数据还原。

二、备份

ES备份存储的仓库可以为:Shared filesystem(NAS等)、 Amazon S3, HDFS和Azure Cloudde等常用文件系统,本文档只提供备份到Shared filesystem和HDFS

方案一:备份到集群共享目录

步骤:
1)、搭建集群共享目录 (这里使用NFS也可以使用其它共享目录技术)
安装NFS服务端:
a、选择集群中某一个节点,可以选择ES的Master节点,检查是否安装NFS

rpm -qa | grep nfs  
rpm -qa | grep rpcbind

b、如果没有安装,则安装NFS

yum install nfs-utils  rpcbind
离线环境需要自己去下载相关包安装

c、设置开机启动

systemctl  enable  rpcbind.service
systemctl  enable  nfs-server.service

d、启动NFS

systemctl  start   rpcbind.service
systemctl  start   nfs-server.service

e、创建共享目录

mkdir  /mont/backups/my_backup   具体目录名可以自己设置
chown  -R  用户名  /mont/backups/my_backup

这里的用户名必须是启动ES的用户

f、设置可以访问的地址和权限

vi  /etc/exports 添加下面内容:
/mont/backups/my_backup  *(rw,sync,no_root_squash,no_subtree_check)

代表所有网段都可以访问,如果想配置为特定ip,可以添加为es集群中所有节点的ip

g、刷新配置并查看

exportfs  -a     刷新配置并立刻生效
showmount  -e  ip    这里ip为当前创建共享目录主机ip

配置NFS客户端(所有除开上一步中的外的所有ES节点都需执行如下操作)

a、检查是否安装NFS

rpm -qa | grep nfs  
rpm -qa | grep rpcbind
 

b、如果没有安装,则安装NFS

yum install nfs-utils  rpcbind
离线环境需要自己去下载相关包安装

c、设置开机启动

systemctl  enable  rpcbind.service
systemctl  enable  nfs-server.service

d、启动NFS

systemctl  start   rpcbind.service
systemctl  start   nfs-server.service

e、创建共享目录

mkdir  /mont/backups/my_backup  保持和NFS服务端目录一致
chmod -R  用户名  /mont/backups/my_backup
这里的用户名必须是启动ES的用户

f、挂载目录

showmount  -e   ip   ip为NFS服务端ip
mount -t nfs  ip:/mont/backups/my_backup  /mont/backups/my_backup  ip同上

h、设置开机挂载

vi /etc/fstab
ip:/mont/backups/my_backup  /mont/backups/my_backup nfs defaults 0 0
ip为NFS服务端ip

2)、修改es配置

修改elasticsearch.yml,配置path.repo的属性为上述共享目录,然后重启集群

3)、注册快照仓库
在这里插入图片描述

通过post操作可以对备份仓库信息作出变更

在这里插入图片描述

4)、创建快照

创建所有索引快照:
在这里插入图片描述

my_backup:仓库名
snapshot_1:快照名

创建部分索引快照:
在这里插入图片描述

my_backup:仓库名
snapsot_2:快照名

通过indices属性可以指定哪些索引需要生成快照信息

5)、快照删除
在这里插入图片描述

my_backup:仓库名
snapshot_2:快照名,查看存在的快照可用:

在这里插入图片描述

my_backup:仓库名,其余为固定参数

方案二:备份到HDFS

HDFS快照/还原插件是针对最新的Apache Hadoop 2.x(当前为2.7.1)构建的。如果您使用的发行版与Apache Hadoop协议不兼容,请考虑使用自己的发行版替换plugin文件夹内的Hadoop库(可能必须调整所需的安全权限)
步骤:

1)、安装repository-hdfs插件
2)、注册仓库

在这里插入图片描述

my_hdfs_repository:仓库名
uri:hdfs访问路径
path:hdfs上存储目录

如果hadoop设置了kerberos安全认证则:
把kerberos认证文件放到es config目录下repository-hdfs目录之中并命名为:krb5.keytab
然后创建hdfs快照仓库:
在这里插入图片描述

如果每个节点使用的是不同的服务主体则需要使用_HOST参数:
在这里插入图片描述

其余步骤参考方案一

ES还原

还原快照所有:
在这里插入图片描述

my_backup:索引仓库名
snapshot_1:快照名

还原快照特定索引:

POST /_snapshot/my_backup/snapshot_1/_restore{
    "indices": "index_1", 
  }

index_1:需要还原的索引名
my_backup:仓库名
snapshot_1:快照名


目录
相关文章
|
Oracle 关系型数据库 数据库
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
9-2 Oracle数据库(表)的逻辑备份与恢复 --导出与导入
172 1
|
SQL 关系型数据库 MySQL
MySQL视图、索引、备份与恢复、执行计划(三)
MySQL视图、索引、备份与恢复、执行计划(三)
62 0
|
4月前
|
缓存 索引
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
kibana上执行ES DSL语言查询数据并查看表结构与数据、删除索引、查看文件大小
223 0
|
存储 关系型数据库 MySQL
MySQL视图、索引、备份与恢复、执行计划(二)
MySQL视图、索引、备份与恢复、执行计划(二)
77 0
|
存储 SQL 缓存
【MySQL高级】查询缓存、合并表、分区表
【MySQL高级】查询缓存、合并表、分区表
218 0
【MySQL高级】查询缓存、合并表、分区表
OushuDB-准备导出的表
OushuDB-准备导出的表
48 0
|
SQL 数据可视化 关系型数据库
值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢
最近要导入大量数据到数据库,数据库中有数据列要求唯一的,也就是唯一键,但是我拿到的数据有部分重复,一运行就会出错,如果把重复数据找出来,删除后在导入,太麻烦了,所以想要丝滑导入,并忽略重复数据,有了下面的解决方案: 本次案例使用phpmyadmin进行演示
999 1
值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢
|
关系型数据库 MySQL Java
[玩转ES] ES批量/全量导入数据
[玩转ES] ES批量/全量导入数据
593 0
[玩转ES] ES批量/全量导入数据
|
安全 大数据 API
ES如何查询索引的全量数据
ES如何查询索引的全量数据
2266 0
|
自然语言处理 Java API
ES索引重建reindex详解
ES索引重建reindex详解
1856 0