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/
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
三、安装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.查看运行情况,不报错即可