要是您需要将MySQL中的增量数据及时同步至阿里云Elasticsearch(简称ES)实例白丝 足交,且您对数据同步的及时性条件较高,不错通过Canal来完了。
已创建阿里云ECS实例。用于部署Canal-server和Canal-adapter。具体操作请参见自界说购买实例。本文创建的实例的镜像为CentOS 7.6 64位。
使用截止本决策仅撑捏将MySQL增量数据同步至阿里云ES。
装配的JDK版块必须大于就是1.8.0。
Canal 1.1.4版块不撑捏ES 7.x版块。
ES 7.x版块的数据写入需使用Canal 1.1.5版块,ES 8.x版块请礼聘1.1.7版块。您也不错通过其他面目(举例Logstash、DTS)完了MySQL数据同步。
在进行数据同步时撑捏自界说索引Mapping,但需保证Mapping中界说的字段(称呼+类型)与MySQL中一致。
本决策需要您自行保证Canal的可用性,幸免出现业务不行用或故障。举例:当出现ECS重启,Canal十分退出等场景时怎样链接同步数据等。
Canal Adapter不撑捏使用HTTPS公约齐集阿里云ES实例。
操作设施设施一:准备MySQL数据源参预RDS适度台,创建RDS MySQL数据库和表。具体操作请参见RDS MySQL快速初学。本文使用的建表语句如下。
-- create table CREATE TABLE `es_test` ( `id` bigint(32) NOT NULL, `name` text NOT NULL, `count` text NOT NULL, `color` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;设施二:创建索引
登录贪图阿里云ES实例的Kibana适度台,具体操作请参见登录Kibana适度台。
在左侧导航栏,单击Dev Tools。在Console中,扩充以下呐喊白丝 足交创建索引。
设施三:装配JDK齐集ECS实例。
检察可用的JDK软件包列表。
礼聘合乎的版块,装配JDK。
设立环境变量。
掀开etc文献夹下的profile文献。
在文献内添加如下的环境变量。
按下Esc键,然后使用:wq保存文献并退出vi时势,随后扩充以下呐喊使设立见效。
扩充以下呐喊,考证JDK是否装配凯旋。
设施四:装配并开动Canal-server下载Canal-server。
解压。
修改conf/example/instance.properties文献。
按下Esc键,然后使用:wq呐喊保存文献并退出vi时势。
开动Canal-server,并检察日记。
设施五:装配并开动Canal-adapter下载Canal-adapter。
解压。
修改conf/application.yml文献。
按下Esc键,然后使用:wq呐喊保存文献并退出vi时势。
不异的面目,修改conf/es/*.yml文献,界说MySQL数据到ES数据的映射字段。
开动Canal-adapter行状,并检察日记。
设施六:考证增量数据同步在RDS MySQL数据库中,新增、修改或删除数据库中es_test表的数据。
登录贪图阿里云ES实例的Kibana适度台,具体操作请参见登录Kibana适度台。
在左侧导航栏,单击Dev Tools。在Console中,扩充以下呐喊查询同步凯旋的数据。
常见问题Q:开动Canal-adapter时,adapter.log日记暴露十分,若那儿理?作沐日记为:java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource
at com.alibaba.otter.canal.client.adapter.es7x.ES7xAdapter.init(ES7xAdapter.java:54) ~[client-adapter.es7x-1.1.5-jar-with-dependencies.jar:na]
A:将canal.adapter-1.1.5\plugin下的client-adapter.es7x-1.1.5-jar-with-dependencies.jar替换为canal-1.1.5-alpha-2版块下的对应文献。
以root权限用户为例,操作设施如下:
下载canal-1.1.5-alpha-2版块。详备信息请参见Canal release note。
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5-alpha-2/canal.adapter-1.1.5-SNAPSHOT.tar.gz
解压文献。
tar -zxvf canal.adapter-1.1.5-SNAPSHOT.tar.gz
拷贝canal-1.1.5-alpha-2 版块中plugin下的client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies.jar放到canal.adapter-1.1.5\plugin目次下。
cp canal.adapter-1.1.5-SNAPSHOT/plugin/client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies.jar canal/canal.adapter/plugin
删除canal.adapter-1.1.5\plugin下的client-adapter.es7x-1.1.5-jar-with-dependencies.jar。
rm -rf client-adapter.es7x-1.1.5-jar-with-dependencies.jar
修更名字。
mv client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies.jar client-adapter.es7x-1.1.5-jar-with-dependencies.jar
Q:开动Canal-adapter时,adapter.log日记暴露十分,若那儿理?作沐日记为java.sql.SQLException: Unknown system variable 'query_cache_size'
A:可能是由于Canal-adapter中自带的MySQL驱动版块与齐集的MySQL数据库版块不一致导致,举例:使用的canal.adapter-1.1.4时,其自带的MySQL驱动器为mysql-connector-java-5.1.40.jar,在齐集MySQL8时就会出现如上所述的十分信息。可更换Canal-adapter中的MySQL驱动器版块进行处理。
Q:使用Canal同步MySQL 8.0版块的数据,怎样将MySQL驱动器版块替换成8.0?
A:以下操作设施以root权限用户为例。
2018国内自拍在线视观看下载8.0版块的MySQL驱动器。
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.29.zip
解压。
unzip mysql-connector-java-8.0.29.zip
拷贝文献到Canal-adapter的lib目次下。
mv mysql-connector-java-8.0.29/mysql-connector-java-8.0.29.jar lib/
添加权限。
chmod 777 lib/mysql-connector-java-8.0.29.jar chmod +st lib/mysql-connector-java-8.0.29.jar
删除5.x版块的驱动器。
rm -rf lib/mysql-connector-java-5.1.40.jar相干文档
设立实例公网或私网走访白名单
登录Kibana适度台
检察集群情景和节点信息
设立同义词
插件设立