同步RDS数据到 Elasticsearch 中并进行搜索分析-阿里云开发者社区

开发者社区> 阿里云文档> 正文

同步RDS数据到 Elasticsearch 中并进行搜索分析

简介:
+关注继续查看

阿里云上拥有丰富的云存储、云数据库产品。如果您希望针对这些产品中的数据进行分析和搜索,可以通过DataWorks的数据集成服务,将离线数据同步到Elasticsearch中,最快可达到5分钟一次。

注意:做数据同步时可能会产生公网流量费用,请您知晓。

准备工作

完成离线数据的分析与搜索,需要您完成以下几步操作:

  • 创建一个数据库,您可以选择使用阿里云的RDS数据库,也可以在本地服务器上自建数据库。本文档以RDS for MySQL数据库为例,数据库字段及数据如下图所示。

  • 购买一台可以与VPC内的Elasticsearch交互的ECS,这台ECS将获取数据源数据并执行写Elasticsearch数据的任务(该任务将由数据集成系统统一下发)。
  • 开通DataWorks的数据集成服务,并且将ECS作为一个可以执行任务的资源,注册到数据集成服务中去。
  • 配置一个数据同步的脚本,并且让其可以周期性的执行起来。
  • 创建一个Elasticsearch实例,用来存储数据集成系统同步成功的数据。

操作步骤

数据同步

  1. 创建专有网络VPC
  2. 进入Elasticsearch控制台,单击创建,创建一个Elasticsearch实例。

地域专有网络虚拟交换机与您第一步中创建的专有网络保持一致。

  1. 购买一台与Elasticsearch服务处于同一个VPC内的ECS服务器,并分配一个公网IP合或开通弹性IP,为了节省您的成本,您可以复用已有的ECS服务器。
  • 建议使用 centos6、centos7 或者 aliyunos。
  • 如果您添加的 ECS 需要执行 MaxCompute 任务或者同步任务,需要检查当前 ECS 的 python 版本是否是 python2.6或2.7 的版本(centos5 的版本为 2.4 ,其余 os 自带了 2.6 以上版本)。
  • 请确保 ECS 有公网 IP。
  1. 进入DataWorks 控制台,并进入工作区。

    • 如果您已经开通过DataWorks数据集成产品,您将会看到如下页面:

    • 如果您未开通过DataWorks数据集成产品,您将会看到如下页面。您需要按照步骤开通数据集成服务,此开通动作会产生费用,请您按照费用提示进行预算评估。

  2. 单击DataWorks项目下方的进入数据集成
  3. 在数据集成页面,选择左侧导航栏中的资源组,单击新增资源组
  4. 根据界面提示,输入资源组名称和服务器信息。此服务器为您已经购买的ECS服务器,服务器信息说明如下:

  • ECS UUID:登录 ECS 服务器,执行 dmidecode | grep UUID,取返回值。
  • 机器 IP/机器CPU(核)/机器内存(GB):您ECS实例的公网IP/CPU/内存。您可以在ECS控制台上单击实例名称,在配置信息模块,找到相关信息。
  • 按照界面提示,完成安装Agent步骤。其中第五步为开通服务器的8000端口,可以跳过,保持系统默认即可。
  1. 配置数据库白名单,添加该资源组的IP地址和DataWorks服务器的IP地址,到您的数据库白名单中。配置方法请参见添加白名单
  2. 资源组创建成功后,选择左侧导航栏的数据源,单击新增数据源
  3. 单击MySQL,进入新增MySQL数据源页面,填入数据源信息,如下图所示。

数据源类型:本文档以阿里云数据库(RDS)为例,您也可以选择有公网IP无公网IP。各配置项的详细信息请参见配置MySQL数据源

  1. 选择左侧导航栏的同步任务,单击新建,选择脚本模式
  2. 导入模板对话框中,选择数据源类型MySQL数据源为您第10步中新增的数据源名称,目标类型Elasticsearch,完成后单击确认

  1. 配置数据同步脚本。具体配置请参考配置数据同步脚本模式任务,Elasticsearch 的配置规则请参考配置ElasticSearch Writer

说明

  • endpoint为Elasticsearch 的内网或外网地址,如果您使用的是内网地址,请在Elasticsearch的集群配置页面,配置Elasticsearch的系统白名单。如果您是用的是外网地址,请在Elasticsearch的网络配置页面,配置 Elasticsearch的公网地址访问白名单(包括DataWorks服务器的IP地址和您所使用的资源组的IP地址)。
  • Elasticsearch Writer中accessId和accessKey需要配置您的Elasticsearch的访问用户名(默认为elastic)和密码。
  • index为Elasticsearch实例的索引,您需要使用该索引名称访问Elasticsearch的数据。
  1. 同步脚本配置完成后,单击页面右侧的配置任务资源组,选择您第7步创建的资源组名称,完成后单击运行,将MySQL中的数据同步到Elasticsearch中。

数据搜索分析

  1. 进入Elasticsearch控制台,单击右上角的kibana控制台,选择Dev Tools
  2. 执行如下命令,查看已经同步过来的数据。

    POST /testrds/_search?pretty
    {
    "query": { "match_all": {}}
    }

testrds为您同步数据时,设置的index字段的值。

  1. 执行如下命令,按照trans_num字段对文档进行排序。

    POST /testrds/_search?pretty
    {
     "query": { "match_all": {} },
     "sort": { "trans_num": { "order": "desc" } }
    }
  2. 执行如下命令,搜索文档中的categorybrand字段。

    POST /testrds/_search?pretty
    {
     "query": { "match_all": {} },
     "_source": ["category", "brand"]
    }
  3. 执行如下命令,搜索category的文档。

    POST /testrds/_search?pretty
    {
     "query": { "match": {"category":"生"} }
    }

更多命令和访问方式,请参考阿里云Elasticsearch官方文档Elastic.co官方帮助中心

常见问题

  • 同步过程中出现无法连接数据库的相关错误。

解决方法:将您资源组中所使用的ECS服务器的内网IP和外网IP,都添加到您数据库的白名单中。

  • 同步过程中无法连通Elasticsearch实例的相关错误。

解决方法:按照下面步骤进行排查。

  1. 检查在运行同步脚本之前,是否在页面右侧的配置任务资源组中选择了您前面步骤创建的资源组。

    • 是,执行下一步。
    • 否,单击页面右侧的配置任务资源组,选择您前面步骤创建的资源组。完成后单击运行
  2. 检查是否在Elasticsearch实例的白名单中,添加了DataWorks服务器的IP地址和您所使用的资源组的IP地址。

    • 是,执行下一步。
    • 否,将DataWorks服务器的IP地址和您所使用的资源组的IP地址,添加到 Elasticsearch 实例的白名单中。

    注意:如果您使用的是内网地址,请在Elasticsearch的集群配置页面,配置Elasticsearch的系统白名单。如果您是用的是外网地址,请在Elasticsearch的网络配置页面,配置Elasticsearch的公网地址访问白名单(包括DataWorks服务器的IP地址和您所使用的资源组的IP地址)。

  3. 检查您的同步脚本配置是否正确。包括endpoint(您 Elasticsearch 实例的内网或外网地址)、accessId(Elasticsearch 实例的访问用户名,默认为elastic)和accessKey(Elasticsearch实例的访问密码)。

(本文作者为大数据产品文档团队)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
实战 | canal 实现Mysql到Elasticsearch实时增量同步
关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区、QQ群等讨论最多的问题之一。 问题包含但不限于: 1、Mysql如何同步到Elasticsearch? 2、Logstash、kafka_connector、canal选型有什么不同,如何取舍? 3、能实现同步增删改查吗? … 本文给出答案。
22 0
【玩转ElasticSearch】降维打击!使用ElasticSearch作为时序数据库
本篇分享最近把ElasticSearch当作时序数据库来用的心得。• 需求需求是这样的:提供一个后台,选用户画像标签(多选),点确认后弹出“选出了xxx个用户”,再继续点就把用户dump出来、推送消息。现在要做这个后台的数据仓库层。详细分析一下需求:1. 我们的用户画像走流式计算,每秒大量更新,所以对插入/更新性能要求很高。2. 查询条件翻译成SQL就是类似 se
8361 0
专注数据,打造阿里云Elasticsearch“一站式”数据服务体系
众所周知,Elasticsearch的问世使得各种结构、非结构数据得以实现实时搜索、分析的可能,越来越多的用户使用ES集群(即Elasticseach集群,下文均简称ES集群)实现数据的升值与挖掘。而用户在开发的过程中总是面临数据导入、迁移以及日常ES集群运维等难题,无法将全部精力投放在真正对ES集群的使用与数据的升值。
2472 0
干货 | 论Elasticsearch数据建模的重要性
1、什么是数据模型? 数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,用图形化的形式去描述业务规则的过程,从而表示现实世界中事务的相互关系的一种映射。
7 0
解析实时的DB time过程分析
在我们查看awr报告的时候总是会有一个关键指标需要注意,那就是DB time,这个指标一般都是通过awr报告来看到的。 比如我们得到的awr报告头部显示的下面的信息,我们就清楚的知道DB time是1502.06 mins,相对于Elapsed time来说,将近有20倍的压力。
568 0
RDS数据库与自建库的gtid主从同步
一、在centos7上部署MySQL数据库1、从MYSQL官网下载安装文件wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.
1834 0
把ElasticSearch当成是NoSQL数据库
Elasticsearch 可以被当成一个 "NoSQL"-数据库来使用么? NoSQL 意味着在不同的环境下存在不同的东西, 而erestingly 它并不是真的跟 SQL 有啥关系. 我们开始只会觉得 "可能"而已, 所以细细研究了 Elasticsearch 的各种属性,包括它已经为了成就最具灵活性,可伸缩性和性能优异的分析查询引擎的那些属性。
1193 0
+关注
阿里云文档
阿里云文档团队
36
文章
24
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载