canal是阿里巴巴集团提供的一个开源产品,能够通过解析数据库的增量日志,提供增量数据的订阅和消费功能,是Github中开源的ETL(Extract Transform Load)软件。当您需要将MySQL中的增量数据同步至Elasticsearch时,可通过Canal来实现。
当前canal支持的MySQL版本包括5.1.x 、5.5.x 、5.6.x 、5.7.x 、8.0.x。
本文以阿里云Elasticsearch和RDS MySQL为例,为您介绍数据同步的方法。阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。阿里云Elasticsearch为您提供1个月的免费试用活动,单击此处即可免费试用。
与开源Elasticsearch相比,阿里云Elasticsearch提供了高可用性、高可靠性、高安全性等功能特性。并且提供Elasticsearch和Kibana的全托管服务,您可以按需付费,即买即用。在此基础上,还对内核性能进行了优化,提供独立的index build服务、存储计算分离、智能运维、达摩院分词器、商业插件等功能。
操作流程
-
创建RDS MySQL实例、了解Canal、创建阿里云ES和ECS实例。
本文使用的RDS MySQL、阿里云ES和ECS在相同的专有网络VPC(Virtual Private Cloud)下。
-
RDS MySQL:用来存放源数据和增量数据。
-
canal:进行数据库日志解析,获取增量变更进行同步,是Github中开源的ETL(Extract Transform Load)软件,详情请参见canal。
-
阿里云ES:用来接收增量数据。
-
阿里云ECS:用来部署Canal-server和Canal-adapter。
-
在RDS MySQL中,准备待同步的数据。
-
在阿里云ES实例中,创建索引和Mapping。要求Mapping中定义的字段名称和类型与待同步数据保持一致。
-
在使用Canal前,必须先安装JDK,要求版本大于等于1.8.0。