Windows安装canal、canal-adapter同步docker的数据库信息到docker的es

docker的mysql配置(链接)和elasticsearch的配置(链接)详见之前的文章,这里不再赘述。本文主要讲解Windows下面安装canal和canal-adapter,并实现同步docker的数据库信息到docker的es。

一、安装java

已安装的可以跳过此步骤。下载地址:java下载

java

  • 配置java环境变量
    • 新建JAVA_HOME 变量


      JAVA_HOME

      输入:

      变量名:JAVA_HOME
      变量值:电脑上JDK安装的绝对路径
      

      JDK 路径下必须能够看到如下的文件。


      jdk路径
    • 新建/修改 CLASSPATH 变量
      输入
      变量名:CLASSPATH
      变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
      
    • 修改Path 变量
      新建两条路径:
      %JAVA_HOME%\bin
      %JAVA_HOME%\jre\bin
      
Path
  • 检查 打开 cmd,输入 java,出现一连串的指令提示,说明配置成功了:


    java

二、安装配置canal

注意:安装目录不能出现中文

  • 下载地址这里以1.1.5版本为例。建议使用迅雷下载。

    canal

    用压缩软件解压刚刚下载的两个压缩包,然后把解压后的文件放到自己喜欢的目录下。

  • 配置

    • 修改canal/conf/example/instance.properties文件
      instance.properties

      需要改动的项已在图中框出。
canal.instance.master.address=172.16.10.26:3306  #指定要读取binlog的MySQL的IP地址和端口
canal.instance.master.journal.name= #从指定的binlog文件开始读取数据
canal.instance.master.position= #指定偏移量,做过主从复制的应该都理解这两个参数。
                                 #tips:binlog和偏移量也可以不指定,则canal-server会从当前的位置开始读取。我建议不设置
canal.instance.master.timestamp=  #mysql主库链接时起始的binlog的时间戳,默认:无

# username/password
canal.instance.dbUsername=canal #指定连接mysql的用户密码
canal.instance.dbPassword=Aa123456.
canal.instance.connectionCharset = UTF-8 #字符集

# table regex
# mysql 数据解析关注的表,Perl正则表达式.多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 
# 常见例子:
# 1. 所有表:.* or .*\\..*
# 2. canal schema下所有表: canal\\..*
# 3. canal下的以canal打头的表:canal\\.canal.*
# 4. canal schema下的一张表:canal.test1
# 5. 多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)
canal.instance.filter.regex=risk.canal,risk.cwx #这个是比较重要的参数,匹配库表白名单,比如我只要test库的user表的增量数据,则这样写 test.user
  • 启动
双击bin目录下的startup.bat
  • 查看 server 日志 日志在canal.deployer-1.1.5目录的logs文件夹下。

  • 修改canal.adapter-1.1.5/conf/application.yml文件。

application.yml
application.yml
  • 新建canal.adapter-1.1.5/conf/es7/canal.yml文件,将下面的内容粘贴进去
dataSourceKey: defaultDS   #指定数据源,这个值和adapter的application.yml文件中配置的srcDataSources值对应。
destination: example       #指定canal-server中配置的某个实例的名字,注意:我们可能配置多个实例,你要清楚的知道每个实例收集的是那些数据,不要瞎搞。
groupId: g1                #组ID,对应application.yml中的canalAdapters/groups/groupId中的值
outerAdapterKey: db1Key    #对应application.yml中的canalAdapters/groups/outerAdapters/name/key中的值
esMapping:                 #ES的mapping(映射)
  _index: canal            #要同步到的ES的索引名称(自定义),需要自己在ES上创建哦!
  #_type: _doc              #ES索引的类型名称(自定义)
  _id: _id                 #ES标示文档的唯一标示,通常对应数据表中的主键ID字段,注意我这里写成的是"_id",有个下划线哦!
  #pk: id                  #如果不需要_id, 则需要指定一个属性为主键属性
  sql: "select t.id as _id, t.name, t.sex, t.age, t.amount, t.email, t.occur_time from canal t" #这里就是数据表中的每个字段到ES索引中叫什么名字的sql映射,注意映射到es中的每个字段都要是唯一的,不能重复。
  #etlCondition: "where t.occur_time>='{0}'"
commitBatch: 3000

mysql-connector-java下载5.1.27版本的jar文件,拷贝到canal-adapter文件夹下的lib文件夹,然后把之前的删掉。

  • 创建表
CREATE TABLE `canal` (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(20) NULL COMMENT '名称',
sex  varchar(2) NULL COMMENT '性别',
age  int NULL COMMENT '年龄',
amount decimal(12,2) NULL COMMENT '资产',
email  varchar(50) NULL COMMENT '邮箱',
occur_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
  • 创建es索引


    创建canal索引
  • 创建mapping


    创建mapping
{
    "properties": {
        "id": {
            "type": "long"
        },
        "name": {
            "type": "text"
        },
        "sex": {
            "type": "text"
        },
        "age": {
            "type": "long"
        },
        "amount": {
            "type": "text"
        },
        "email": {
            "type": "text"
        },
        "occur_time": {
            "type": "date"
        }
    }
}
  • 启动canal-adapter
双击bin目录下的startup.bat
  • 查看 adapter 日志 日志在canal.adapter-1.1.5目录的logs文件夹下。
  • 插入1条数据:
insert into canal(id,name,sex,age,amount,email,occur_time) values(null,'cwx','男',18,100000000,'249299170@qq.com',now());
insert
  • 更新1条数据:
update canal set name='cwx1',sex='女',age=28,amount=200000,email='asdf',occur_time=now() where id=1;
update
  • 删除1条数据:
delete from canal where id=1;
delete
  • 需要同步哪个配置就去运行
curl -X POST 'localhost:8081/etl/es7/db1Key/canal.yml'
全量同步
kibana dev tools 测试

补充

一、如果启动canal-adapter报以下错误

java.lang.ClassCastException: com.alibaba.druid.pool.DruidDataSource cannot be cast to com.alibaba.druid.pool.DruidDataSource

这个是 druid 包冲突导致的,解决办法如下

  • 下载源码包 下载

    canal源码

  • 解压后,使用IDEA打开,定位到 client-adapter.escore 模块的 pom.xml 的 druid 更新为

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <scope>provided</scope>
</dependency>
pom.xml
  • 更新后,在项目根目录下执行
mvn clean package
  • 然后到 canal-canal-1.1.5/client-adapter/es7x/target下 将打包好的 client-adapter.es7x-1.1.5-jar-with-dependencies.jar 替换掉 canal-adapter/plugin 下原来的,重启 Canal Adapter即可。

二、 如果mvn命令无法使用,可以先安装maven工具 下载

maven

  • 解压maven 放在需要安装的目录
  • 配置环境变量


    maven配置环境变量
maven配置环境变量
  • 在终端输入以下命令,查看是否安装成功
mvn -v
查看maven是否安装成功

本文结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容