RDS SQL Server是一款稳定、可靠、可弹性伸缩的在线数据库服务,可实现复杂的SQL查询。DataWorks是一个基于大数据引擎,集成数据开发、任务调度、数据管理等功能的大数据开发治理平台。本文将介绍如何通过DataWorks将RDS SQL Server数据同步到Elasticsearch上。

注意事项

DataWorks工作空间、RDS SQL Server实例和阿里云Elasticsearch实例需要创建在同一时区下,否则当同步与时间相关的数据时,同步前后的数据可能存在时区差。

操作流程

  1. 步骤一:环境准备
    准备RDS SQL Server数据源、创建DataWorks工作空间、创建与配置阿里云Elasticsearch实例。
  2. 步骤二:购买并创建DataWorks独享资源组
    购买并创建一个数据集成独享资源组,并为该资源组绑定专有网络和工作空间。独享资源组可以保障数据快速、稳定地传输。
  3. 步骤三:在DataWorks中添加SQL Server和Elasticsearch数据源
    将SQL Server和Elasticsearch数据源接入DataWorks的数据集成服务中。
  4. 步骤四:配置并运行DataWorks数据同步任务
    通过向导模式配置数据同步任务,将数据集成系统同步成功的数据存储到Elasticsearch中。独享资源组将获取SQL Server数据源的数据,并执行将数据写入Elasticsearch中的任务(该任务将由数据集成系统统一下发)。
  5. 步骤五:验证数据同步结果
    在Kibana控制台中,查看同步成功的数据。

步骤一:环境准备

  1. 创建阿里云Elasticsearch实例,并开启实例的自动创建索引功能。
    具体操作,请参见创建阿里云Elasticsearch实例配置YML参数。本文以7.10通用商业版实例为例。
  2. 创建DataWorks工作空间。
    创建工作空间时,所选地域需要与阿里云Elasticsearch一致。具体操作,请参见创建工作空间
  3. 创建RDS SQL Server实例并准备测试数据。
    创建RDS SQL Server实例时,所选地域、专有网络和虚拟交换机要与阿里云Elasticsearch实例保持一致。本文以创建2019标准版RDS SQL Server实例为例,具体操作请参见创建RDS SQL Server实例
    本文使用的测试数据如下:
    说明 本文数据仅供测试,不能用于生产环境。
    测试数据
    • 建表语句
      CREATE TABLE students(
          id INT,
          name VARCHAR(20),
          age INT
      )
    • 插入数据
      INSERT INTO [students]( [id] , [name] , [age] )values('1', '小明','21');

步骤二:购买并创建DataWorks独享资源组

  1. 登录DataWorks控制台
  2. 选择相应地域后,在左侧导航栏,单击资源组列表
  3. 购买独享数据集成资源。
    具体操作,请参见新增和使用独享数据集成资源组
    重要 购买时,所选地域需要与目标工作空间保持一致。
  4. 创建一个独享数据集成资源。
    具体操作,请参见新增和使用独享数据集成资源组。本文使用的配置如下,其中资源组类型选择独享数据集成资源组创建独享资源组
  5. 单击已创建的独享资源组右侧的网络设置,参见绑定专有网络,为该独享资源组绑定专有网络。
    独享资源部署在DataWorks托管的专有网络中。DataWorks需要与RDS SQL Server实例和Elasticsearch实例的专有网络连通才能同步数据。而RDS SQL Server实例和Elasticsearch实例在同一专有网络下,因此在绑定专有网络时,选择Elasticsearch实例所在专有网络交换机即可。绑定专有网络
  6. 单击已创建的独享资源组右侧的修改归属工作空间,为该独享资源组绑定目标工作空间。

步骤三:在DataWorks中添加SQL Server和Elasticsearch数据源

  1. 进入DataWorks的数据集成页面。
    1. 在DataWorks控制台的左侧导航栏,单击工作空间列表
    2. 找到目标工作空间,单击其右侧操作列下的数据集成
  2. 在左侧导航栏,单击数据源
  3. 数据源管理页面,单击新增数据源
  4. 新增数据源对话框的大数据存储区域中,单击SQL Server
  5. 新增SQL Server数据源对话框中,填写数据源信息。
    新增SQL Server数据源
    数据源类型:本教程以阿里云实例模式为例,您也可以选择连接串模式。各配置项的详细说明,请参见配置SQLServer数据源
    重要 如果您选择的是连接串模式,可以通过RDS SQL Server的公网地址配置JDBC URL,但需要将独享资源组的EIP地址添加到RDS SQL Server的白名单中。详细信息,请参见设置RDS SQL Server白名单使用独享数据集成资源组执行任务需要在数据库添加的IP白名单
    配置完成后,可与独享资源组进行连通性测试。连通状态显示为可连通时,表示连通成功。测试连通成功
  6. 单击完成
  7. 使用同样的方式添加Elasticsearch数据源。
    本示例选择数据源类型连接串模式,需要配置的参数说明如下。ES数据源配置
    参数说明
    Endpoint阿里云Elasticsearch的访问地址,格式为:http://<实例的内网或公网地址>:9200。实例的内网或公网地址可在基本信息页面获取,详细信息,请参见查看实例的基本信息
    重要 如果您使用的是公网地址,需要将独享资源组的EIP地址添加到阿里云Elasticsearch的公网地址访问白名单中,详情请参见配置实例公网或私网访问白名单使用独享数据集成资源组执行任务需要在数据库添加的IP白名单
    用户名访问阿里云Elasticsearch实例的用户名,默认为elastic。
    密码对应用户的密码。elastic用户的密码在创建实例时设定,如果忘记可重置,重置密码的注意事项和操作步骤,请参见重置实例访问密码
    说明 其他未提及的参数请自定义输入。

步骤四:配置并运行DataWorks数据同步任务

  1. 在DataWorks的数据开发页面,新建一个业务流程。
    具体操作步骤请参见创建业务流程
  2. 新建一个离线同步任务。
    1. 展开新建的业务流程,右键单击数据集成,选择新建节点 > 离线同步
    2. 新建节点对话框中,输入节点名称,单击确认
  3. 选择数据源区域中,将数据来源指定为SQL Server数据源,并选择待同步的表名称;将数据去向指定为Elasticsearch数据源,并填入索引名和索引类型。
    选择SQL Server数据源
    说明
  4. 字段映射区域中,设置来源字段目标字段的映射关系。
  5. 通道控制区域中,配置执行任务的相关参数。
  6. 配置任务调度属性。
    在页面右侧,单击调度配置,按照需求配置相应的调度参数。各配置的详细说明请参见调度配置章节。
    重要
    • 在提交任务前,必须配置任务调度依赖的上游节点,详情请参见配置同周期调度依赖
    • 如果您希望对任务进行周期性调度,需要配置任务的时间属性,包括任务的具体执行时间、调度周期、生效周期、重跑属性等。
    • 周期任务将于配置任务开始的第二天00:00,按照您的配置规则生效执行。
  7. 配置执行同步任务所使用的资源组。
    选择资源组
    1. 在页面右侧,单击数据集成资源组配置
    2. 选择独享数据集成资源组为您创建的独享资源组。
  8. 提交任务。
    1. 保存当前配置,单击提交图标图标。
    2. 提交新版本对话框中,填入备注
    3. 单击确认
  9. 单击运行图标图标,运行任务。
    任务运行过程中,可查看运行日志。运行成功后,显示如下结果。任务运行成功

步骤五:验证数据同步结果

  1. 登录目标阿里云Elasticsearch实例的Kibana控制台,根据页面提示进入Kibana主页。
    登录Kibana控制台的具体操作,请参见登录Kibana控制台
    说明 本文以阿里云Elasticsearch 7.10.0版本为例,其他版本操作可能略有差别,请以实际界面为准。
  2. 单击右上角的Dev tools
  3. Console页签中,执行如下命令查看同步的数据。
    POST /dbo.students/_search?pretty
    {
       "query": { "match_all": {}}
    }
    说明 dbo.students需要替换为您在配置DataWorks数据同步时设置的index字段的值。
    预期结果如下。预期结果