云搜索服务 CSS-通过备份与恢复迁移第三方Elasticsearch集群至华为云:操作步骤

时间:2024-12-18 16:36:34

操作步骤

  1. 登录Elasticsearch所在的第三方友商云,创建一个支持s3协议的共享存储仓库,例如登录阿里云的进入OSS服务创建目录“patent-esbak”, 或者登录腾讯云进入COS服务创建目录“patent-esbak”
  2. 在第三方Elasticsearch集群中创建快照备份仓库,用于存放Elasticsearch快照数据。

    例如,在Elasticsearch中创建一个备份仓库“my_backup”,关联到存储仓库OSS。

    PUT _snapshot/my_backup
        {
            # 存储仓库类型。
    	"type": "oss",
            "settings": {
    		# 步骤1中存储仓库的内网访问 域名 。
    		"endpoint": "http://oss-xxx.example.com", 
    		# 存储仓库的用户ID和密码。认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密, 确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ak和sk。
    		"access_key_id": "ak",
    		"secret_access_key": "sk",
    		# 步骤1创建的存储仓库的bucket名称。
    		"bucket": "patent-esbak", 
    		# 是否打开快照文件的压缩功能。
    		"compress": false,
    		# 配置此参数可以限制快照数据的分块大小。当上传的快照数据超过这个数值,数据就会被分块上传到存储仓库中。
    		"chunk_size": "1g",
    		# 仓库的起始位置,默认是根目录。
    		"base_path": "snapshot/"
            }
    }

  3. 在第三方Elasticsearch集群中创建快照。

    • 为所有索引创建快照。

      例如,创建一个名为“snapshot_1”的快照。

      PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true
    • 为指定索引创建快照。

      例如,创建一个名为“snapshot_test”的快照,该快照包含索引“patent_analyse”和“patent”。

      PUT _snapshot/my_backup/snapshot_test
      {
      "indices": "patent_analyse,patent"
      }

  4. 在第三方Elasticsearch集群中查看集群的快照创建进度。

    • 执行如下命令,可以查看所有快照信息。
      GET _snapshot/my_backup/_all
    • 执行如下命令,可以查看指定快照“snapshot_1”的信息。
      GET _snapshot/my_backup/snapshot_1

  5. 通过华为云 对象存储迁移 服务 OMS 将快照数据从存储仓库迁移到 对象存储服务 OBS的“esbak”桶中。

    OMS支持多种云服务商数据迁移到对象存储服务OBS中,具体请参见各云服务商迁移教程

    在OMS创建迁移任务时,“元数据迁移方式”一定要选择“保留元数据”,否则数据迁移会有异常。

  6. CSS 服务的Elasticsearch集群中创建一个存储仓库关联到OBS,用于恢复第三方Elasticsearch的快照数据。

    例如,在集群中创建一个“my_backup_all”的存储仓库,关联上一步OBS桶“esbak”。

    PUT _snapshot/my_backup_all/
    {
        "type" : "obs",
        "settings" : {
    		# OBS的内网访问域名。
    		"endpoint" : "obs.xxx.example.com",
    		"region" : "xxx",
    		# 访问OBS的用户名和密码。认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险, 建议在配置文件或者环境变量中密文存放, 使用时解密, 确保安全;本示例以ak和sk保存在环境变量中为例, 运行本示例前请先在本地环境中设置环境变量ak和sk。
    		"access_key": "ak",
    		"secret_key": "sk",  
    		# OBS的桶名称,和上一步迁移目标集群的OBS桶名保持一致。
    		"bucket" : "esbak",   
    		"compress" : "false",
    		"chunk_size" : "1g",
    		# 注意“snapshot”后面没有/。
    		"base_path" : "snapshot",
    		"max_restore_bytes_per_sec": "100mb",
    		"max_snapshot_bytes_per_sec": "100mb"    
    	}
    }

  7. CS S服务的Elasticsearch集群中通过快照恢复数据。

    1. 查看所有快照信息。
      GET _snapshot
    2. 通过快照恢复数据。
      • 恢复某一快照中的所有索引。例如恢复名为“snapshot_1”的快照的所有索引数据。
        POST _snapshot/my_backup_all/snapshot_1/_restore?wait_for_completion=true
      • 恢复某一快照中的部分索引。例如名为“snapshot_1”的快照中只恢复非“.”开头的索引。
        POST _snapshot/my_backup/snapshot_1/_restore
        {"indices":"*,-.monitoring*,-.security*,-.kibana*","ignore_unavailable":"true"}
      • 恢复某一快照中的指定索引,并重命名。例如在名为“snapshot_1”的快照中,将索引“index_1”恢复为“restored_index_1”,“index_2”恢复为“restored_index_2”。
        POST /_snapshot/my_backup/snapshot_1/_restore
        {
        	# 只恢复索引“index_1”和“index_2”,忽略快照中的其他索引。
        	"indices": "index_1,index_2"
        	# 查找正在恢复的索引,该索引名称需要与提供的模板匹配。
        	"rename_pattern": "index_(.+)",
        	# 重命名查找到的索引。
        	"rename_replacement": "restored_index_$1"
        }

  8. 查看快照恢复结果。

    • 查看所有快照的恢复结果。
      GET /_recovery/
    • 查看指定索引的快照恢复结果。
       GET {index_name}/_recovery

support.huaweicloud.com/bestpractice-css/css_07_0010.html