
# 使用Logstash迁移数据
Logstash是一款收集、转换、清洗、解析数据的工具，本章节为您提供了一个使用CSS服务的Logstash集群完成Elasticsearch集群间数据迁移的示例，您可以参考此示例来了解Logstash服务，包括创建集群、导入导出数据、任务配置等操作。
#### 操作视频
本视频演示了在CSS服务中使用Logstash进行数据迁移的操作流程，旨在帮助您了解如何配置Logstash管道，高效迁移Elasticsearch集群数据。
因不同版本操作界面可能存在差异，相关视频供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object56815812816" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/css-video/Using_Logstash_to_Migrate_Data_CN.mp4" title="使用Logstash迁移数据" poster="https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002620738491.jpg" height="302" width="604"></video>
#### 操作流程
以下是使用Logstash集群将源Elasticsearch集群的数据迁移到目标Elasticsearch集群的操作步骤。
开始迁移数据前，请务必按[准备工作]指导完成必要操作。
1. [步骤一：获取Elasticsearch集群信息]：获取源Elasticsearch集群和目标Elasticsearch集群的访问地址。
2. [步骤二：创建Logstash集群]：创建一个Logstash集群用于迁移Elasticsearch集群的数据。
3. [步骤三：配置迁移任务]：在Logstash集群配置Elasticsearch集群的迁移任务。
4. [步骤四：启动迁移任务]：在Logstash集群启动配置好的迁移任务。
5. [步骤五：停止任务]：当数据迁移完成，不再需要迁移任务时，您可以停止任务。
 
 #### 准备工作
- 已注册华为账号并开通华为云，进行了实名认证，且在使用云搜索服务前检查账号状态，账号不能处于欠费或冻结状态。
  如果您还没有华为账号，请参考以下步骤创建。
  1. 打开[华为云网站](https://www.huaweicloud.com/)。
  
  2. 在页面右上角单击"注册"，根据提示信息完成注册。
  
  3. 勾选服务条款， 单击"开通"。
  
  4. 实名认证，请参考：
     - 个人账号：[实名认证](https://support.huaweicloud.com/usermanual-account/zh-cn_topic_0077914254.html)
     
     - 企业账号：[实名认证](https://support.huaweicloud.com/usermanual-account/zh-cn_topic_0077914253.html)
      
    
- 已准备好源Elasticsearch集群"Source-ES"和目标Elasticsearch集群"Dest-ES"，且都是单节点的非安全集群。
- 确认源Elasticsearch集群中待迁移的索引信息，例如本示例需要迁移的是以index开头的索引。
 
 #### 步骤一：获取Elasticsearch集群信息
获取源Elasticsearch集群和目标Elasticsearch集群的访问地址，如果是安全集群还需要联系服务管理员获取集群的用户名和密码。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏选择"集群管理 \> Elasticsearch"。
3. 在集群列表，选择目标集群，在"内网访问地址"列获取并记录集群的内网IP地址，一般是"\<host\>:\<port\>"或"\<host\>:\<port\>,\<host\>:\<port\>"样式。 例如本示例里，源Elasticsearch集群"Source-ES"的访问地址是"10.62.179.32:9200"，目标Elasticsearch集群"Dest-ES"的访问地址是"10.62.179.33:9200"。
   图1获取IP地址   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002032217253.png "点击放大") 
 
 #### 步骤二：创建Logstash集群
创建一个Logstash集群用于迁移Elasticsearch集群的数据。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏选择"集群管理 \> Logstash"。
3. 在集群列表右上角，单击"创建集群"，默认进入新版创建页面。
   图2新版创建页面   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002362454460.png "点击放大") 
4. 集群配置，选择集群类型和版本。
   表1集群配置 
   | 参数   | 示例           | 说明                       |
   |:---|:---|:---|
   | 集群类型 | **Logstash** | 选择"Logstash"。            |
   | 集群版本 | **7.10.0**   | 选择所需的集群版本，支持的版本以界面可选项为准。 |
      
   
5. 基础配置，选择当前区域、可用区和计费模式。
   表2基础配置 
   | 参数   | 示例         | 说明                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|:---|
   | 当前区域 | **华北-北京四** | 选择集群的所在区域。区域指集群的物理数据中心所在的位置，不同区域的云服务产品之间内网互不相通。建议就近选择靠近您业务的区域，可减少网络时延，提高访问速度。                                                                                                                                                                                                                                                                                                                                   |
   | 可用区  | **可用区1**   | 选择集群工作区域下关联的可用区。可用区指在同一区域下，电力、网络隔离的物理区域，可用区之间内网互通，不同可用区之间物理隔离。 最多支持配置2个可用区。                                                                                                                                                                                                                                                         |
   | 计费模式 | **按需计费**   | 选择集群的计费模式，集群支持包年/包月和按需计费两种模式。 - **包年/包月**：预付费模式，按照订单的购买周期结算。  - **按需计费**：后付费模式，按照集群实际使用时长计费，计费周期为一小时，不足一小时按一小时计费。   |
      
   
6. 配置数据节点。
   Logstash集群的数据节点用于处理和传输数据。
   图3配置数据节点   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002328776197.png "点击放大")
   表3数据节点配置 
   | 参数        | 示例                                                                                                                                                                                                                                                                                                                                                                                                                  | 说明                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|:---|
   | CPU架构     | **X86计算**                                                                                                                                                                                                                                                                                                                                                                                                           | 选择数据节点的CPU架构。                                                                                                                                                                                                                                                                                                                                                                             |
   | 节点规格      | **ess.spec-4u8g**                                                                                                                                                                                                                                                                                                                                                                                                   | 选择数据节点的规格。单击"选择节点规格"，在弹框中选择合适的规格。 规格列表的"vCPUs \| 内存"呈现了规格的CPU核数和内存，"建议存储范围"呈现了该规格支持的存储容量。 不同区域支持的节点规格不同，请以实际环境为准。                                                                                                                  |
   | 节点存储类型和容量 | - **高I/O**  - **40GB**   | 选择数据节点的存储类型和容量。 - 选择云硬盘类型，不同区域支持的云硬盘类型不同，请以实际环境为准。  - 节点存储容量为固定值：40GB   |
   | 节点数量      | **1**                                                                                                                                                                                                                                                                                                                                                                                                               | 设置集群中的数据节点个数。                                                                                                                                                                                                                                                                                                                                                                             |
      
   
7. 网络配置，设置集群的VPC、IP地址和安全组。
   图4网络配置   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002328404261.png "点击放大")
   表4网络配置 
   | 参数     | 示例                 | 说明                                                                                                                                                                        |
   |:---|:---|:---|
   | 虚拟私有云  | **vpc-default**    | 指定集群使用的虚拟专用网络，可以对不同业务进行网络隔离                                                                                                                                               |
   | 子网     | **subnet-default** | 指定集群使用的子网，通过子网提供与其他网络隔离的、可以独享的网络资源，以提高网络安全。 选择当前虚拟私有云下的子网。                                       |
   | IPv4地址 | **自动分配IPv4地址**     | 分配集群节点的IPv4地址。                                                                                                                                                            |
   | 安全组    | **default**        | 指定集群使用的安全组，安全组起着虚拟防火墙的作用，为集群提供安全的网络访问控制策略。 所选安全组的入方向规则中，"协议端口"必须为"全部"或包含9200的端口范围，否则外部业务访问可能会异常。 |
      
   
8. 集群管理配置，设置集群名称、企业项目等信息。
   表5集群管理 
   | 参数   | 示例                  | 说明                                                                                                                                                                                                           |
   |:---|:---|:---|
   | 集群名称 | **Sample-Logstash** | 自定义集群名称。                                                                                                                                                                                                     |
   | 添加描述 | **不添加**             | 为集群添加描述，方便用户识别。                                                                                                                                                                                              |
   | 企业项目 | **default**         | 给集群绑定一个企业项目。 企业项目是一种云资源管理方式，企业项目管理服务提供统一的云资源按项目管理，以及项目内的资源管理、成员管理，默认项目为"default"。 如果开通了"企业项目"，请从下拉列表中选择所在的企业项目。 |
   | 标签   | **不添加**             | 为集群添加标签，方便用户识别和管理拥有的集群资源。 每个集群最多可以设置20个标签。                                                                                                                     |
      
   
9. 单击"立即创建"，开始创建集群。
10. 返回集群列表，查看新建的集群。当集群创建成功后，"集群状态"会变为"可用"。
    图5查看集群状态   
    ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002328895957.png) 
 
 #### 步骤三：配置迁移任务
在Logstash集群配置Elasticsearch集群的迁移任务。
1. 在Logstash集群列表，单击集群名称"Sample-Logstash"，进入集群详情页。
2. 选择"配置中心"页签。
3. 在配置中心界面，单击右上角"创建"，进入创建配置文件页面，编辑配置文件。
   图6配置任务   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002525457588.png "点击放大")
   表6创建配置文件参数说明 
   | 参数     | 示例                                                                              | 说明                                                                                                                                                              |
   |:---|:---|:---|
   | 名称     | **es-es**                                                                       | 自定义配置文件名称。 只能包含字母、数字、中划线或下划线，且必须以字母开头。必须大于等于4个字符。                                                                |
   | 配置文件内容 | **关键配置项请参见[表7]，其他配置项保持默认值。** | 展开上方"系统模板"，选择"elasticsearch"，单击操作列的"应用"，在配置文件内容中，基于模板注释填写配置项。                                                                                                   |
   | 隐藏内容列表 | **不涉及**                                                                         | 配置隐藏字符串列表。 输入需要隐藏的敏感字符串列表，按"Enter"创建。 列表最大支持20条，单个字符串最大长度是512字节。 |
   | 描述     | **/**                                                                           | 为配置文件添加描述，方便识别。                                                                                                                                                 |
      
    表7配置项说明 
   | 配置       | 示例                                                                                                                                                                                                                                                                                                                                                                                                     | 说明                                                                                                                                                |
   |:---|:---|:---|
   | hosts    | - **input hosts：** ``` hosts => ["10.62.179.32:9200"] ```   - **output hosts：** ``` hosts => ["10.62.179.33:9200"] ```                                     | 分别在input和output中填写源Elasticsearch集群和目标Elasticsearch集群的访问地址。获取方式请参见[步骤一：获取Elasticsearch集群信息]。 |
   | index    | - **input index：** ``` index => "index*" ```     - **output index：** ``` index => "my_index" ```    | 分别在input和output中填写待迁移的源索引名称和事件写入的索引名称。                                                                                                            |
   | user     | **使用"#"注释掉**                                                                                                                                                                                                                                                                                                                                                                                           | 访问Elasticsearch集群的用户名。仅安全集群涉及，如果是非安全集群则此项使用"#"注释掉。                                                                                                |
   | password | **使用"#"注释掉**                                                                                                                                                                                                                                                                                                                                                                                           | 访问Elasticsearch集群的密码。仅安全集群涉及，如果是非安全集群则此项使用"#"注释掉。                                                                                                 |
      
   
4. 编辑完成后，单击"下一页"配置Logstash管道参数。
   图7配置管道参数   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000001995618170.png "点击放大")
   表8管道参数说明 
   | 参数                   | 示例         | 说明                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|:---|
   | pipeline.workers     | **4**      | 并行执行管道的Filters和Outputs阶段的工作线程数。                                                                                                                                                                                                                                                                                                                                    |
   | pipeline.batch.size  | **125**    | 单个工作线程在尝试执行其Filters和Outputs之前将从inputs收集的最大事件数，该值较大通常更有效，但会增加内存开销。                                                                                                                                                                                                                                                                                                  |
   | pipeline.batch.delay | **50**     | 管道事件批处理参数，以指定在将规模较小的事件批次调度至管道工作线程之前，对每个事件的等待时长。                                                                                                                                                                                                                                                                                                                    |
   | query.type           | **memory** | 用于事件缓冲的内部队列模型。 - "memory"为基于内存的传统队列。  - "persisted"为基于磁盘的ACKed持久化队列。   |
      
   
5. 配置完成后，单击"创建"，系统会自动进行配置文件校验，等待配置文件状态为"可用"，表示创建成功。
   图8配置文件校验   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000001995618174.png "点击放大") 
 
 #### 步骤四：启动迁移任务
在Logstash集群启动配置好的迁移任务。
1. 在配置中心页面，选择新建的状态为"可用"的配置文件，单击"启动"，启动配置任务。 当管道列表中新增管道的"运行状态"变为"工作中"，即表示数据迁移任务已启动并正常运行。此时，"事件"列将动态更新，显示当前已处理的文档数量。
   图9启动配置任务   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000001995618178.png "点击放大") 
2. 数据迁移完毕，检查目标Elasticsearch集群和源集群数据的一致性。例如，分别在源集群和目标集群执行GET _cat/indices命令，对比两者的索引信息是否一致。
   1. 在Elasticsearch集群列表，选择源Elasticsearch集群"Source-ES"或目标Elasticsearch集群"Dest-ES"，单击操作列中的"Kibana"进入Kibana控制台。
   
   2. 在Kibana的左侧导航中选择"Dev Tools"，进入Console界面。 控制台左侧是命令输入框，其右侧的三角形图标为执行按钮，右侧区域则显示执行结果。
      
   
   3. 在Console界面，执行如下命令查看索引信息。
      ```
      GET _cat/indices
      ```
      
    
 
 #### 步骤五：停止任务
当数据迁移完成，不再需要迁移任务时，您可以停止任务。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏选择"集群管理 \> Logstash"。
3. 在集群列表，选择"Sample-Logstash"集群，单击操作列的"配置中心"，进入Logstash集群配置页面。
4. 在配置中心页面，选择已经启动的管道名称，单击"全部停止"，停止正在运行的任务，等待所有管道任务停止完成。
   图10停止任务   
   ![](https://support.huaweicloud.com/qs-css/figure/zh-cn_image_0000002032217261.png "点击放大") 
 
#### 后续步骤
已完成数据迁移业务，无需继续使用集群时，可删除集群释放资源，删除前请确保所有正在运行的管道任务全部停止。
![](https://support.huaweicloud.com/qs-css/public_sys-resources/warning_3.0-zh-cn.png)
集群删除前请停止所有正在运行的任务，避免数据异常， 删除前建议备份配置文件。
1. 登录[云搜索服务管理控制台](https://console.huaweicloud.com/elasticsearch/)。
2. 在左侧导航栏选择"集群管理 \> Logstash"。
3. 在集群列表，选择"Sample-Logstash"集群，在操作列单击"更多"\>"删除"。
4. 在弹出的确认对话框中，输入"DELETE"，单击"确定"完成操作。
5. （可选）当源Elasticsearch集群和目标Elasticsearch集群都不再需要时，可按照相同操作流程执行删除操作。
 
#### 相关文档
了解如何使用Logstash同步数据至CSS服务的Elasticsearch：
- [使用Logstash将RDS MySQL数据同步至Elasticsearch](https://support.huaweicloud.com/bestpractice-css/css_07_0047.html)
- [使用Logstash将Kafka数据接入Elasticsearch](https://support.huaweicloud.com/bestpractice-css/css_07_0056.html)
 
