小数据量可以直接使用elasticdump这个工具配合脚本进行备份或者数据迁移。当数据量较大的时候,可以用elasticsearch提供的数据备份迁移策略:snapshot,来备份、迁移数据。
该策略需要配合共享文件系统。 将备份快照的文件夹作为共享文件夹,使该文件夹可以被所有的新老集群服务器访问到;在原服务器上面备份数据,在新集群的机器上恢复备份,就可以达到数据迁移的目的,本文档中使用nfs来挂载文件夹。
操作的elasticsearch版本为5.4
以下为操作步骤:
-
nfs文件共享系统搭建
注:操作执行的linux系统为redHat6.6
服务端:(提供被挂载的文件夹)
1.安装 nfs-utils rpcbind 软件:
yum install nfs-utils rpcbind -y
- nfs-utils 用于NFS共享发布和访问
- rpcbind 用于远端过程调用机制支持
2.设置服务开机自启:
chkconfig nfs on
chkconfig rpcbind on
3.创建共享目录并设置
mkdir /usr/local/snapshot
vim /etc/exports 加入:
/usr/local/snapshot 188.190.13.52(rw,no_root_squash,no_all_squash,async)
如果有多个ip的话
/usr/local/snapshot 188.190.13.52(rw,no_root_squash,no_all_squash,async) 188.190.13.54(rw,no_root_squash,no_all_squash,async)
exportfs -rv
-查看共享目录
4.启动服务:
/etc/init.d/rpcbind start
/etc/init.d/rpcidmapd start
-启动rpc,RH系操作系统在6.0版本之后没有portmap服务控制rpc的启动,由于NFS和nfslock的启动需要向rpc进行注册,rpc不启动的话就会报错。
-启动rpcbind&rpcidmap rpcbind是6.0版本后默认的RPC服务,所以要先于nfs启动。如果不启动rpcidmap则会造成用户权限的映射错误,用户的权限看起来是一串数字。
/etc/init.d/nfs start
客户端:
1.安装 nfs-utils rpcbind 软件:
yum install nfs-utils rpcbind -y
- nfs-utils 用于NFS共享发布和访问
- rpcbind 用于远端过程调用机制支持
2.设置服务开机自启:
chkconfig nfs on
chkconfig rpcbind on
3.启动服务:
/etc/init.d/rpcbind start
/etc/init.d/rpcidmapd start
-启动rpc,RH系操作系统在6.0版本之后没有portmap服务控制rpc的启动,由于NFS和nfslock的启动需要向rpc进行注册,rpc不启动的话就会报错。
-启动rpcbind&rpcidmap rpcbind是6.0版本后默认的RPC服务,所以要先于nfs启动。如果不启动rpcidmap则会造成用户权限的映射错误,用户的权限看起来是一串数字。
/etc/init.d/nfs start
4.创建共享目录并挂载
mkdir /usr/local/snapshot
mount 188.190.13.53:/usr/local/snapshot /usr/local/snapshot
df -h
-查看挂载结果
挂载成功后,服务机、客户机的共享目录是同步的
-
elasticsearch数据备份和还原
snapshot备份恢复操作:
原集群
1.设置snapshot备份文件夹:
path.repo: ["/usr/local/snapshot"]
并重启
每个节点都需要有这个操作
2.创建快照仓库
my_backup --仓库名
location --仓库地址
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/usr/local/snapshot",
"compress": true
}
}
查看创建的仓库
GET /_snapshot/my_backup
3.创建指定索引的快照备份
PUT /_snapshot/my_backup/snapshot_20190526data
{
"indices": "data20190526"
}
如果想要备份所有的索引
PUT /_snapshot/my_backup/snapshot_20190526
查看创建的备份
GET /_snapshot/my_backup/snapshot_20190526data
查看创建的备份的状态
GET /_snapshot/my_backup/snapshot_20190526data/_status
原集群需要迁移的索引都备份完成之后
在所有原集群服务器上取消挂载 umount /data/backup_es,防止后续出现问题
备份恢复:
1.设置snapshot备份文件夹:
path.repo: ["/usr/local/snapshot"]
并重启
每个节点都需要有这个操作
2.创建快照仓库
my_backup --仓库名
location --仓库地址
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/usr/local/snapshot",
"compress": true
}
}
查看创建的仓库
GET /_snapshot/my_backup
3.恢复备份
按照备份中的索引名去恢复
POST /_snapshot/my_backup/snapshot_20190526data/_restore
自行指定索引名
POST /_snapshot/my_backup/snapshot_20190526data/_restore
{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": true,
"rename_pattern": "data20190526",
"rename_replacement": "restored_data20190526"
}
查看索引是否被恢复,比对新、老集群该索引数据的数量
POST /data20190526/_search