Canal1.1.5同步mysql5.7到ES7.10

发布时间 2023-05-05 14:24:26作者: 沈丘

一、开启mysql的二进制日志

vim /etc/my.cnf

log_bin=mysql-bin

binlog-format=ROW

server_id=1

二、创建索引

要求Mapping中定义的字段名称和类型与待同步数据保持一致

PUT es_test?include_type_name=true

{

   "settings" : {

     "index" : {

      "number_of_shards" : "5",

      "number_of_replicas" : "1"

    }

  },

  "mappings" : {

    "_doc" : {

      "properties" : {

        "count": {

          "type": "text"

        },

        "id": {

          "type": "integer"

        },

        "name": {

          "type" : "text",

           "analyzer": "ik_smart"

        },

        "color" : {

           "type" : "text"

        }

      }

    }

  }

}

三、安装配置cannal

1、安装jdk1.8

2、下载配置canal.deployer-1.1.5

tar -xzvf canal.deployer-1.1.5-SNAPSHOT.tar.gz -C canal-server

vim canal-server/conf/example/instance.properties

canal.instance.mysql.slaveId=10

canal.instance.master.address=mysql数据库ip地址:3306

canal.instance.dbUsername=root

canal.instance.dbPassword=123456

3、启动cannal-server并查看日志

./bin/startup.sh

cat logs/canal/canal.log

4、下载配置canal.adapter-1.1.5

tar -xzvf canal.adapter-1.1.5-SNAPSHOT.tar.gz -C canal-adapter

①vim canal-adapter/conf/application.yml

canal.conf:

  mode: tcp

  retries: 0

  srcDataSources:    

    defaultDS:

      url:jdbc:mysql://mysql数据库ip地址:3306/elasticsearch?useUnicode=true&characterEncoding=utf-8&useSSL=false   #如果不加上useSSL=false,会提示init datasource error

      username:root    

      password:123456

  canalAdapters:

  - instance: example

    groups:

    - groupId: g1

      outerAdapters:

      - name: logger

            - name: es7        

         hosts: 127.0.0.1:9200    #如果canal版本为1.1.6,ip前面要加上http://

    properties:          

      mode: rest

      # security.auth: test:123456     

      cluster.name: elasticsearch

②vim canal-adapter/conf/es7/mytest_user.yml

dataSourceKey: defaultDS

destination: example

groupId: g1

esMapping:

  _index: es_test

  _id: _id

  sql: "select a.id as _id,a.id,a.count,a.name,a.color from es_test a"

  etlCondition: "where a.c_time>={}"

  commitBatch:3000

5、启动canal-adapter并查看日志

./bin/startup.sh

cat logs/adapter/adapter.log

 

四、验证增量数据同步

在mysql中新增、更改、删除数据

insert `elasticsearch`.`es_test`(`count`,`id`,`name`,`color`) values('11',2,'canal_test2','red');

五、查看ES中同步数据

GET /es_test/_search