es快照 es迁移 elasticsearch快照 elasticsearch

es迁移

1.nfs搭建:ES快照恢复是所产生的快照文件需要保存在共享目录中,共享目录可以在一台独立的linux服务器上搭建,也可以在es集群所在的机器上选取一台搭建,使用目录/ucpindex/repo_data ,搭建服务端使用如下脚本
https://download.csdn.net/download/w4187402/11049933
,服务端搭建好后需要重新启动,使得文件夹访问权限生效。
搭建客户端使用如下脚本
https://download.csdn.net/download/w4187402/11049942

2.配置es快照目录:快照迁移功能需要在es集群配置文件elasticsearch.yml 中配置好快照目录,在文件中添加 path.repo: /ucpindex/repo_data ,即可,然后重启es使配置生效。

3.备份操作:在旧的es集群中任选一台新建仓库,命令如下
curl -XPUT ‘http://{IP}:9200/_snapshot/my_backup’ -d ‘{
“type”: “fs”,
“settings”: {
“location”: “/ucpindex/repo_data”,
“compress”: true
}
}’

成功后有如下响应 {“acknowledged”:true}

继续进行快照备份操作,命令如下
curl -XPUT “http://{IP}:9200/_snapshot/my_backup/snapshot_1” -d ‘{
“indices”: “{要备份的索引名,多个以逗号隔开}”,
“ignore_unavailable”: “true”,
“include_global_state”: false,
“partial”: “false”
}’

成功后有如下响应 {“accepted”:true}

4.还原操作:在新的es集群中任选一台进行还原操作,命令如下
curl -XPOST “http://{本机IP}:9200/_snapshot/my_backup/snapshot_1/_restore”

成功后有如下响应 {“accepted”:true}

Es迁移即完成

附录es仓库操作命令

仓库

在进行任何快照或者恢复操作之前必须有一个快照仓库注册在Elasticsearch里。下面的这个命令注册了 一个名为my_backup 的共享文件系统仓库,快照将会存储在 /ucpindex/repo_data 这个目录。
curl -XPUT ‘http://{IP}:{port}/_snapshot/my_backup’ -d ‘{
“type”: “fs”,
“settings”: {
“location”: “/ucpindex/repo_data”,
“compress”: true
}
}’

一旦仓库被注册了,就可以只用下面的命令去获取这个仓库的信息
curl -XGET ‘http://{IP}:{port}/_snapshot/my_backup?pretty’

如果没有指定仓库名字,或者使用 _all 作为仓库名字,Elasticsearch将返回该集群当前注册的所有仓库的信息:
curl -XGET ‘http://{IP}:{port}/_snapshot’

curl -XGET ‘http://{IP}:{port}/_snapshot/_all’

快照

一个仓库可以包含同一个集群的多个快照。快照根据集群中的唯一名字进行区分。 在仓库 my_backup 里创建一个名为snapshot_1 的快照可以通过下面的命令:
curl -XPUT “http://{IP}:{port}/_snapshot/my_backup/snapshot_1?wait_for_completion=true”

下述命令中通过 indices 参数指定快照包含的索引,这个参数支持同时配置多个索引 multi index syntax. 快照请求同样支持 ignore_unavailable 选项。把这个选项设置为 true 的时候在创建快照的过程中会忽略不存在的索引。默认情况下, 如果没有设置 ignore_unavailable 在索引不存在的情况下快照请求将会失败。通过设置 include_global_state 为false 能够防止 集群的全局状态被作为快照的一部分存储起来。默认情况下,如果快照中的1个或多个索引不是全部主分片都可用会导致整个创建快照的过 程失败。 通过设置 partial 为 true 可以改变这个行为。
curl -XPUT “http://{IP}:{port}/_snapshot/my_backup/snapshot_2” -d ‘{
“indices”: “wkjt_v0”,
“ignore_unavailable”: “true”,
“include_global_state”: false,
“partial”: “false”
}’

如果快照已经建立,我们可以通过如下的命令去获得快照的信息:
curl -XGET “http://{IP}:{port}/_snapshot/my_backup/snapshot_2”

通过如下的命令可以把仓库里所有的快照列出来:
curl -XGET “http://{IP}:{port}/_snapshot/my_backup/_all”

删除
可以通过如下的命令将仓库里的某个快照删除:
curl -XDELETE “http://{IP}:{port}/_snapshot/my_backup/snapshot_1”
当一个快照从仓库里删除之后,Elasticsearch会把所有和这个快照相关并且不被其它快照使用的文件删除。如果对正在创建的某个快照执行 删除操作,则创建快照的过程会被取消,并且会把创建过程中所有已经创建的文件删除。因此,删除操作可以用来取消那些由于误操作引起的 长时间运行的快照操作。

恢复

快照可以使用如下的操作来恢复:
curl -XPOST “http://{IP}:{port}/_snapshot/my_backup/snapshot_1/_restore”

默认情况下,快照中的所有索引以及集群状态都会被恢复。在恢复请求中可以通过 indices 来指定需要被恢复的索引,同样可以使用 include_global_state 选项来防止恢复集群的状态。 indices 支持配置多个索引multi index syntax.rename_pattern 和 rename_replacement 选项可以在恢复的时候使用正则表达式来重命名index。详见 这里.
curl -XPOST “http://{IP}:{port}/snapshot/my_backup/snapshot_2/restore" -d '{
“indices”: “wkjt_v0”,
“ignore_unavailable”: “true”,
“include_global_state”: false,
“rename_pattern”: "index
(.+)",
“rename_replacement”: "restored_index
$1”
}’

快照状态

正在运行的快照的详细信息可以通过如下的命令来获取:
curl -XGET “http://{IP}:{port}/_snapshot/_status”
在这种格式下,这个命令将会返回所有正在运行的快照的信息。通过指明仓库名字,能够把结果限定到具体的一个仓库。

curl -XGET “http://{IP}:{port}/_snapshot/my_backup/_status”

如果仓库名字和快照id都指明了,这个命令就会返回这个快照的详细信息,甚至这个快照不是正在运行。
curl -XGET “http://{IP}:{port}/_snapshot/my_backup/snapshot_1/_status”

同样支持多个快照id:
curl -XGET “http://{IP}:{port}/_snapshot/my_backup/snapshot_1,snapshot_2/_status”

监控快照/恢复进度

快照操作的进度也可以通过定时的调用下面的命令去获得:
curl -XGET "“http://{IP}:{port}/_snapshot/my_backup/snapshot_1”
注意,获取快照信息的操作和快照操作使用相同的资源和线程池。所以,执行获取快照信息的操作的时候如果大量的分片正在做快照操作, 在获取快照新的操作返回结果之前需要先等到资源可用才行。如果分片太大,等待的时间会挺长。

要获取更多的及时和完整的关于快照的信息,可以使用如下的快照状态命令。
curl -XGET "“http://{IP}:{port}/_snapshot/my_backup/snapshot_1/_status”
获取快照信息的方法只返回关于快照进度的基本信息, 快照状态命令会返回正在做快照的每个分片的具体信息。

#停止正在运行的快照和恢复操作
快照和恢复框架只允许同一时刻每次运行1个快照或恢复操作。如果正在运行的一个快照是误操作导致的或者运行的时间太长,可以用快照删除 操作去终止正在执行的快照操作。快照删除操作会检查要删除的快照是否正在运行,如果是,删除操作先停止这个快照操作,然后再将它从仓库 里删除。

恢复操作是用用标准的分片回复机制。因此,任何正在运行的恢复操作可以通过删除正在恢复的索引来取消。注意,所有被删除的索引的数据也 会被从集群里删除。

猜你喜欢

转载自blog.csdn.net/w4187402/article/details/88744876