canal集群搭建

准备

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

安装canal.server

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

创建slave账户

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; 

canal 连接开启sasl验证的Kafka集群

底层逻辑:
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

mysql多主配置

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工作正常

你可能感兴趣的:(canal,大数据,mysql)