腾讯云云搜索MySQL数据同步

MySQL数据同步前提条件
  • 已创建和MySQL、ES在相同区域、可用区、VPC、子网下的云主机。
  • 已安装并MySql、JDK、Canal-server、Canal-adapter。
  • 在ES中创建的索引和mapping与MySQL中创建的表名称和字段一致。
操作步骤
  • 连接MySQL数据库测试,命令格式如下:
  • mysql-hMySQL腾讯云的内网地址-PMySQL腾讯云端口,一般为3306-uMySQL数据库的账号-p登录数据库的密码-DMySQL数据库的名称

命令示例:

mysql-hmysql-cn-north-1-9dae15cd77e84bb8.rds.cloud.com-P3306-utestml-pmima-Dtestml

访问成功时响应如下:

mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.WelcometotheMySQLmonitor.Commandsendwith;org.YourMySQLconnectionidis1489Serverversion:8.0.13SourcedistributionCopyright(c)2000,2019,Oracleand/oritsaffiliates.Allrightsreserved.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'h'forhelp.Type'c'toclearthecurrentinputstatement.2.启动Canal-server。

1)修改conf/example/instance.properties文件。

viconf/example/instance.properties参数参数说明canal.instance.master.addressMySQL数据库的内网地址:内网端口,相关信息可在RDSforMySQL腾讯云的基本信息页面获取。例如mysql-cn-north-1-9dae15cd77e84bb8.rds.cloud.com:3306。canal.instance.dbUsernameMySQL数据库的账号名称,可在腾讯云的账号管理页面获取。canal.instance.dbPasswordMySQL数据库的密码。
  • 启动Canal-server。
  • ./bin/startup.sh
  • 启动Canal-adapter。

1)修改conf/application.yml文件:

viconf/application.yml参数参数说明canal.conf.canalServerHostcanalDeployer访问地址。保持默认(127.0.0.1:11111)即可。canal.conf.srcDataSources.defaultDS.urlbc:mysql://MySQL内网地址:内网端口/数据库名称?useUnicode=true,相关信息可在MySQL腾讯云的基本信息页面获取。例如bc:mysql-cn-north-1-9dae15cd77e84bb8.rds.cloud.com:3306/testml?useUnicode=true。canal.conf.srcDataSources.defaultDS.usernameMySQL数据库的账号名称,可在MySQL腾讯云的账号管理页面获取。canal.conf.srcDataSources.defaultDS.passwordMySQL数据库的密码。canal.conf.canalAdapters.groups.outerAdapters.hosts定位到name:es的位置,将hosts替换为腾讯云ES腾讯云的内网地址:内网端口,相关信息可在ES腾讯云的基本信息概览页面获取。例如es-nlb-es-5gi2ck2s6w.jvessel-open-hb.cloud.com:9200:。canal.conf.canalAdapters.groups.outerAdapters.mode必须设置为rest。canal.conf.canalAdapters.groups.outerAdapters.properties.security.auth腾讯云ES腾讯云的账号:密码。例如elastic:es_password。canal.conf.canalAdapters.groups.outerAdapters.properties.cluster.name腾讯云ES腾讯云的ID,可在腾讯云的基本信息概览页面获取。

2)修改conf/es/.yml文件,定义MySQL数据到ES数据的映射字段

viconf/es/.yml参数参数说明esMapping._index创建表和字段章节中,在ES腾讯云中所创建的索引的名称。本文使用es_test。esMapping._type创建表和字段章节中,在ES腾讯云中所创建的索引的类型。本文使用_doc。esMapping._id需要同步到ES腾讯云的文档的id,可自定义。本文使用_id。esMapping.sqlSQL语句,用来查询需要同步到ES中的字段。

3)启动Canal-adapter服务。

./bin/startup.sh
  • 导出增量数据。

1)在MySQL数据库中,管理数据库testml中testml表的数据。新增数据示例如下:

insert`testml`.`testml`(`count`,`id`,`name`,`operation`)values('5',8,'tom','delete');

2)在Kibana的DevTools页面,查询同步过来的数据。

GET/testml/_search