elasticsearch+canal+mysql数据库同步

1、安装elasticsearch

在linux系统上通过docker容器进行安装elasticsearch

1.1搜索elasticsearch

docker search elasticsearch;

1.2从镜像上拉去下来

docker pull elasticsearch

1.3通过docker启动一个单节点集群

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \   #挂载数据卷到本地
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:6.4.0

如果因为内存大小,启动不起

docker pull elasticsearch:6.4.0

启动时会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改该目录的权限,再重新启动即可;

chmod 777 /mydata/elasticsearch/data/

1.4安装中文分词器IKAnalyzer,并重新启动

docker exec -it elasticsearch /bin/bash
#此命令需要在容器中运行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip
docker restart elasticsearch

1.5访问elastic search:http://ip地址:9200/

img

2、kibina的安装

2.1下载kibana的docker镜像(版本需要和es的保持一致)

docker pull kibana:6.4.0

2.2使用docker启动

docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:6.4.0

2.3访问地址:http://192.168.3.101:5601

img

三、安装canal

canal的运行可以直接参考官方的WIKI,其地址为:https://github.com/alibaba/canal/wiki/Docker-QuickStart

3.1 下载好canal server

docker pull canal/canal-server

3.2启动canal-server

#启动新的 这里-v是将外部的文件挂载到容器内部 这样就不用每次启动都要配置参数了
docker run --name canal -p 11111:11111 
-v /mydata/canal/instance.properties:/home/admin/canal-server/conf/example/instance.properties 
-v /mydata/canal/canal.properties:/home/admin/canal-server/conf/canal.properties  
 -d canal/canal-server

修改 mydata/canal/instance.properties 文件

vi /mydata/canal/instance.properties 

## 找到数据库信息,按需更改
canal.instance.master.address=127.0.0.1:3306
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
## 按照需要同步的表选择
canal.instance.filter.regex=db.table

3.3部署canal-adapter

1.拉去镜像

docker pull slpcat/canal-adapter:v1.1.5

2.创建配置文件

mkdir -p /mydata/canal-adapter/conf
touch application.yml
mkdir -p /mydata/canal-adapter/conf/es7
cd es7
touch ceshi.yml

4.修改application.yml内容

server:
  port: 8081
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mode: tcp
  flatMessage: true
  zookeeperHosts:
  syncBatchSize: 1000
  retries: 0
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    canal.tcp.server.host: canal-server地址:11111
    canal.tcp.batch.size: 500
    canal.tcp.username:
    canal.tcp.password:
  srcDataSources:
    defaultDS:
      url: jdbc:mysql://数据库IP:数据库端口/数据库名?useUnicode=true
      username: db_username
      password: db_password
  canalAdapters:
  - instance: example # canal instance Name or mq topic name
    groups:
    - groupId: g1
      outerAdapters:
      - name: logger
      - name: es7 # 该版本发现只能是es7/es6
        hosts: esip地址:9300 # 127.0.0.1:9200 for rest mode
        properties:
          mode: transport # transport # or rest

5.ceshi.yml文件,文件内容要对应数据库和esindex

dataSourceKey: defaultDS
destination: example
groupId: g1
esMapping:
  _index: ceshi
  _id: _id
  _type: _doc
  upsert: true
  #  pk: id
  sql: "SELECT a.id _id from t_ceshi a "
  #  objFields:
  #    _labels: array:;
  etlCondition: "where a.>={}"
  commitBatch: 3000

6.创建并启动容器,挂在刚刚创建的文件夹

docker run --name canal-adapter -p 8081:8081 -v /mydata/canal-adapter/conf:/opt/canal-adapter/conf  -d slpcat/canal-adapter:v1.1.5

7.查看运行情况,不报错即可

img

注意:mysql数据库需要开启binlog日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值