如果您需要将商业版或自建Elasticsearch集群中的数据迁移至日志增强版实例的OpenStore智能混合存储中,可以通过手动备份快照和恢复快照的方法来实现。本文介绍实现的具体操作。
前提条件
操作步骤
本文提供的代码均可以在阿里云Elasticsearch实例的Kibana控制台上执行。详细信息,请参见登录Kibana控制台。
步骤一:准备环境
进入目标端Elasticsearch实例的Kibana控制台。
具体操作,请参见登录Kibana控制台。
在Dev Tools的Console页签中输入创建索引的代码。
PUT product_info { "settings": { "number_of_shards": 3, "number_of_replicas": 1 }, "mappings": { "properties": { "productName":{"type":"text"}, "annual_rate":{"type":"keyword"}, "describe":{"type":"text"} } } }
写入数据。
POST /product_info/_bulk?refresh=true {"index":{"_id": "1" }} {"productName":"理财产品A","annual_rate":"3.2200%","describe":"180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"} {"index":{"_id": "2" }} {"productName":"理财产品B","annual_rate":"3.1100%","describe":"90天定投产品,最低10000起投,每天收益到账消息推送"} {"index":{"_id": "3" }} {"productName":"理财产品C","annual_rate":"3.3500%","describe":"270天定投产品,最低40000起投,每天收益立即到账消息推送"} {"index":{"_id": "4" }} {"productName":"理财产品D","annual_rate":"3.1200%","describe":"90天定投产品,最低12000起投,每天收益到账消息推送"}
步骤二:备份快照数据
修改索引Segment数。
将索引Force Merge为1个Segment。例如,对索引
product_info
进行操作。POST /product_info/_forcemerge?max_num_segments=1
检查索引的Segment数为1。
GET _cat/segments/product_info?v
创建仓库。 在源端Elasticsearch实例中创建一个名称为
my_backup
的仓库。PUT _snapshot/my_backup { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
参数说明如下:
参数
说明
endpoint
OSS Bucket的内网访问域名。获取方式,请参见访问域名和数据中心。
access_key_id
用于标识用户。获取方式,请参见获取AccessKey。
secret_access_key
用于验证用户的密钥。获取方式,请参见获取AccessKey。
bucket
OSS Bucket的名称。获取方式,请参见控制台创建存储空间。
compress
打开快照文件的压缩功能:
true:打开压缩功能,仅应用于元数据文件(索引映射和设置)。
false(默认值):不打开压缩功能,数据文件未压缩。
chunk_size
当您上传的数据非常大时,配置此参数可以限制快照过程中分块的大小。超过这个大小,数据将会被分块上传到OSS中。
base_path
仓库的起始位置,默认为根目录。可以指定具体快照的存放目录,例如snapshot/myindex/。
创建快照。
将Force Merge后的
product_info
索引创建快照。例如:快照名为snapshot_1
。PUT _snapshot/my_backup/snapshot_1 { "indices": "product_info"}
查看快照进度,确认快照创建成功。例如,查看快照名为
snapshot_1
的快照状态。GET _snapshot/my_backup/snapshot_1
步骤三:恢复快照数据到Openstore
进入目标端Elasticsearch实例的Kibana控制台。
具体操作,请参见登录Kibana控制台。
创建仓库。
在目标端Elasticsearch实例中创建一个名称为
my_backup
的仓库。PUT _snapshot/my_restore { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
恢复快照。
将
product_info
索引的快照恢复到目标端Elasticsearch实例中。说明如果源端实例是冷热分离,恢复的索引需要去除box type,否则索引无法分配。
如果集群中存在与待恢复索引同名的索引,需要提前删除或者关闭该同名索引,否则恢复会失败。
如果跨地域恢复集群快照,需要先将原地域OSS中的快照数据迁移到目标地域OSS中,再恢复到目标地域的Elasticsearch集群中。OSS间迁移的具体操作,请参见阿里云OSS之间迁移教程。
POST _snapshot/my_restore/snapshot_1/_restore { "indices": "product_info", "index_settings": { "index.routing.allocation.require.box_type": null, "index": { "number_of_replicas": 1, "replication": { "type": "segment" }, "codec": "OpenIndex", "allocation": { "existing_shards_allocator": "open_store_allocator" }, "refresh_interval": "1s", "store": { "type": "openstore", "openstore": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "ram_name": "snapshot-role-133******", "type": "hybrid", "bucket_name": "openstore-133******-es-cn-5yd******" } } } } }
endpoint、ram_name和bucket_name是OpenStore集群中的默认参数,可以通过以下命令获取这些参数的信息:
GET _component_template/component-hybrid-openstore-index-template
补充方案
如果源端和目标端实例满足跨集群OSS仓库的前提条件,您也可以通过设置跨集群OSS仓库将源端Elasticsearch集群中的数据迁移到OpenStore智能混合存储中。
操作需要注意:
无需在源端和目标端实例上创建仓库,直接添加OSS仓库引用。
在步骤二中创建仓库时,必须使用aliyun_auto_snapshot。