canal1.1.5同步Mysql数据到ES7
⽂章⽬录
说明: 本⽂默认centos7已经安装好了jdk、mysql和elasticsearch
资源准备下载地址
Mysql5.7
JDK1.8Es7要求安装jdk11,jdk1.8能运⾏,不清楚坑多少ElasticSearch7.12.1集或单机(7.x +)
canal-deployer
canal-adapter
辅助资源准备下载地址
ElasticSearch7.x—head插件安装
nodejs 或者 grunt
v1.1.5-alpha-2
kibana
需要下载v1.1.5-alpha-2快照版本的canal.adapter-1.1.(release1.1.5版本的jar包有bug`*)
⚠ 注意
⚠ 注意
curl是什么命令⚠ 注意
分别解压缩后,将v1.1.5-alpha-2解压缩⽂件夹下plugin⽂件夹中的 client-adapter.es7x-1.1.5-SNAPSHOT-jar-with-dependencies.jar 替换 掉release版本的plugin⽂件的 client-adapter.es7x-1.1.5-jar-with-dependencies.jar
Mysql
对于⾃建 MySQL , 需要先开启 Binlog 写⼊功能,配置 binlog-format 为 ROW 模式,myf 中配置如下
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
注意:针对阿⾥云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这⼀步
授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant
CREATE USER canal IDENTIFIED BY 'Canal@123';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
Mysql8补充——添加mysql8.0.18连接器
默认canal-adapter的lib中只有mysql5.x版本的连接器
wget /maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar mv mysql-connector-java-8.0.18.jar /usr/local/canal-adapter/lib/
chmod777 /usr/local/canal-adapter/lib/mysql-connector-java-8.0.18.jar #权限修改与其它lib库⼀致
chmod +st /usr/local/canal-adapter/lib/mysql-connector-java-8.0.18.jar
es
修改配置
$ vim l
cluster.name: es
node.name: node-1
# 如果服务器像阿⾥云这样的,默认9200端⼝是没有开放的。如果不开放,下⾯的1设置不要设置,否则启动不起来network.host: 0.0.0.0
http.port: 9200
# 作⽤是开启HTTP对外提供服务,使Head插件能够访问Elasticsearch,修改完成后需要重启es。
新建索引和Mapping(通过kibana或者elasticsearch-head操作)
要求Mapping中定义的字段名称和类型与待同步数据保持⼀致。举例:
PUT /"mytest_user"
{
"settings":{
"number_of_shards":5,
"number_of_replicas":2
},
{
"mappings":{
"properties":{
"name":{
"type":"text"
},
"role_id":{
"type":"long"
},
"c_time":{
"type":"date"
}
}
}
}
}
修改linux内核参数
vim /etc/f
增加:
* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096
#锁住swapping因此需要在这个配置⽂件下再增加两⾏代码
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
vim /f
增加:
vm.max_map_count=655360
fs.file-max=655360
#使系统配置⽣效(使⽤root⽤户)
sysctl -p
ES补充
查看es机名称:
$ curl 47.105.208.102:9200/_cat/nodes?v
重建⽴索引:
curl -XDELETE 172.16.1.202:9200/nt_product
curl -XPUT -H “Content-Type: application/json” 172.16.1.202:9200/nt_product?include_type_name=true -d “@nt_product.json”
全量同步⼀次数据
curl 172.16.1.2:38081/etl/es/l -XPOST
curl 127.0.0.1:38081/etl/es/l -X POST
{“timestamp”:“2020-09-23 11:20:17”,“status”:500,“error”:“Internal Server Error”,“message”:"Extension instance(name: es, class: interface .canal.client.adapter.OuterAdapter)
Kibana
$ wget /downloads/kibana/kibana-6.4.0-linux-x86_
$ tar -xzvf kibana-6.4.0-linux-x86_
$ mv kibana-6.4.0-linux-x86_64 kibana
$ rm -rf kibana-6.4.0-linux-x86_
$ vim kibana/l
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "127.0.0.1:9200"
kibana.index: ".kibana6"
:wq!
nohup ./bin/kibana &
# 在浏览器中打开192.168.254.131:5601
head
修改head配置
$ vim elasticsearch-head-master/Gruntfile.js
#到connect属性,修改hostname的值为es的IP
server:{
options:{
hostname: ‘127.0.0.1’,
port:9100,
base: ‘.’,
keepalive:true
}
}
grunt(未整理,需要⽹络安装)
# 切换到elasticsearch-head-master⽬录下,运⾏启动命令:
$ grunt server
#启动成功后,输出如下信息:
Running “connect:server” (connect) task
Waiting forever…
Started connect web server on localhost:9100
nojs(也需要安装,有的可以yum安装,可⾃⾏百度)
$ npm run start 或者npm run start &
canalserver
$ mkdir canalserver &&cd canalserver
$ tar -zxvf canal.deployer-$ #可以 -C 指定解压⽬录
$ vi conf/example/instance.properties
#修改以下属性
canal.instance.master.address=127.0.0.1:3306 # <RDS MySQL数据库的内⽹地址>:<;内⽹端⼝>
canal.instance.dbUsername=canal
canal.instance.dbPassword=Canal@123
tionCharset=UTF-8 #代表数据库的编码⽅式对应到 java 中的编码类型,⽐如 UTF-8,GBK , ISO-8859-1
ableDruid=false
#canal.instance.parser.parallel=false #如果系统是1个 cpu
#需要改成同步的数据库表规则,例如只是同步⼀下表 canal.=guli_ucenter.ucenter_member11
#canal.=.*\\..*
#只同步test库的全部表数据
canal.=test\\..*
#配置了filter就不⽤配置下⾯这⼀条
# canal.instance.defaultDatabaseName=test
:wq!#保存退出
$ sh bin/startup.sh
$ tailf logs/canal/canal.log
2013-02-05 22:45:27.967 [main] INFO canal.deployer.CanalLauncher - ## start the canal server.
2013-02-05 22:45:28.113 [main] INFO canal.deployer.CanalController - ## start the canal server[10.1.29.120:11111]
2013-02-05 22:45:28.210 [main] INFO canal.deployer.CanalLauncher - ## the canal server is running now ......
$ tailf logs/example/example.log
2013-02-05 22:50:45.636 [main] INFO i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [canal.pro perties]
2013-02-05 22:50:45.641 [main] INFO i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [example/i nstance.properties]
2013-02-05 22:50:45.803 [main] INFO canal.instance.spring.CanalInstanceWithSpring - start CannalInstance for1-example
2013-02-05 22:50:45.810 [main] INFO canal.instance.spring.CanalInstanceWithSpring -
$ sh bin/stop.sh
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论