canal-admin的限定依赖:
1.MySQL,用于存储配置和节点等相关数据
2.canal版本,要求>=1.1.4 (需要依赖canal-server提供面向admin的动态运维管理接口)
1.下载 canal-admin,
1.1.4 版本:1.1.4下载地址
2.解压缩
mkdir canal-admin
tar zxvf canal.admin-1.1.4.tar.gz -C canal-admin
解压完成后,进入 /canal 目录,可以看到如下结构
drwxr-xr-x 6 agapple staff 204B 8 31 15:37 bin
drwxr-xr-x 8 agapple staff 272B 8 31 15:37 conf
drwxr-xr-x 90 agapple staff 3.0K 8 31 15:37 lib
drwxr-xr-x 2 agapple staff 68B 8 31 15:26 logs
3.配置修改
vi conf/application.yml
server:
port: 8089
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
spring.datasource:
address: 127.0.0.1:3306
database: canal_manager
username: canal
password: canal
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${
spring.datasource.address}/${
spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false
hikari:
maximum-pool-size: 30
minimum-idle: 1
canal:
adminUser: admin
adminPasswd: admin
4.初始化元数据库
mysql -h127.1 -uroot -p
导入初始化SQL
source conf/canal_manager.sql
a. 初始化SQL脚本里会默认创建canal_manager的数据库,建议使用root等有超级权限的账号进行初始化
b. canal_manager.sql默认会在conf目录下,也可以通过链接下载 canal_manager.sql
5.启动
sh bin/startup.sh
查看 admin 日志
vi logs/admin.log
2019-08-31 15:43:38.162 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8089 (http)
2019-08-31 15:43:38.180 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler [“http-nio-8089”]
2019-08-31 15:43:38.191 [main] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]
2019-08-31 15:43:38.194 [main] INFO org.apache.catalina.core.StandardEngine - Starting Servlet Engine: Apache Tomcat/8.5.29
…
2019-08-31 15:43:39.789 [main] INFO o.s.w.s.m.m.annotation.ExceptionHandlerExceptionResolver - Detected @ExceptionHandler methods in customExceptionHandler
2019-08-31 15:43:39.825 [main] INFO o.s.b.a.web.servlet.WelcomePageHandlerMapping - Adding welcome page: class path resource [public/index.html]
此时代表canal-admin已经启动成功,可以通过 http://127.0.0.1:8089/ 访问,默认密码:admin/123456
6.关闭
sh bin/stop.sh
1.下载压缩包
到官网地址(release)下载最新压缩包,请下载 canal.deployer-latest.tar.gz
2.将canal.deployer 复制到固定目录并解压
mkdir -p canal
tar -zxvf canal.deployer-1.1.4.tar.gz -C canal
3.canal-server端配置
使用canal_local.properties的配置覆盖canal.properties
# register ip
canal.register.ip =
# canal admin config
canal.admin.manager = 127.0.0.1:8089
canal.admin.port = 11110
canal.admin.user = admin
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
canal.admin.register.auto = true
canal.admin.register.cluster =
4.启动admin-server即可
sh bin/start.sh
canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
底层逻辑:
1)Kafka开启了sasl验证,意味着客户端需要通过sasl验证才能连接Kafka。
2)客户端需要准备两样东西
第一:配置 -Djava.security.auth.login.config
第二:准备sasl验证文件
3)针对canal来讲,需要开启sasl验证模式。
具体操作如下:
1)canal.properties文件修改,用来指定数据发送kafka
canal.serverMode = kafka
2)canal.properties文件新增两行配置,用来开启sasl验证模式。
canal.mq.properties.security.protocol = SASL_PLAINTEXT
canal.mq.properties.sasl.mechanism = PLAIN
3)instance.properties 文件修改 canal.mq.topic=maoxiangyi,用来指定数据发往哪个kafka
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username=“sss”
password=“ssss”;
};
4)准备一个文件kafka_client_jaas.conf,放在config目录下。
5)修改启动脚本 start.sh ,配置 -Djava.security.auth.login.config=/opt/canal/conf/kafka_client_jaas.conf。 具体位置参考以下代码
if [ -n "$str" ]; then
JAVA_OPTS="-server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.security.auth.login.config=/opt/canal/conf/kafka_client_jaas.conf "
else
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m "
fi
1、canal instance配置
# position info
canal.instance.master.address = 10.20.144.25:3306
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
canal.instance.standby.address = 10.20.144.29:3306
canal.instance.standby.journal.name =
canal.instance.standby.position =
canal.instance.standby.timestamp =
#detecing config
1 canal.instance.detecting.enable = true ## 需要开启心跳检查
2 canal.instance.detecting.sql = select 1 ##心跳检查sql
3 canal.instance.detecting.interval.time = 3 ##心跳检查频率
4 canal.instance.detecting.retry.threshold = 3 ## 心跳检查失败次数阀值,超过该阀值后会触发mysql链接切换,比如切换到standby机器上继续消费binlog
5 canal.instance.detecting.heartbeatHaEnable = true ## 心跳检查超过失败次数阀值后,是否开启master/standby的切换.
注意:
a. 填写master/standby的地址和各自的起始binlog位置,目前配置只支持一个standby配置.
b. 发生master/standby的切换的条件:(heartbeatHaEnable = true) && (失败次数>=retry.threshold).
c. 多引入一个heartbeatHaEnable的考虑:开启心跳sql有时候是为client检测canal server是否正常工作,如果定时收到了心跳语句,那说明整个canal server工作正常