windows环境搭建canal集群同步binlog到Kafka

目录

一、canal 高可用集群架构原理

二、canal 高可用集群架构搭建

安装并启动zookeeper

安装kafka

安装canal admin并创建集群,

安装canal server

三、同步binlog 到kafka

 创建instance

数据库准备

验证canal 同步binlog 到kakfa


一、canal 高可用集群架构原理

windows环境搭建canal集群同步binlog到Kafka_第1张图片

介绍:

canal 模拟mysql slave原理,将自己伪装为slave,同步mysql master binlog。

1.Admin负责管理canal 集群配置信息,动态管理所有canal Server 配置信息;管理canal server 上的instance 队列;

2.Canal Server 创建Instance 队列,同步mysql binlog ,一个canal server 可以创建多个instance;server 采用主备模式部署,使用zk选主保证高可用。

3.instance队列 负责mysql数据库的binlog,一个instance 同步一个mysql 库的binlog,同步多个mysql binlog 需创建多个instance。

二、canal 高可用集群架构搭建

环境准备:win10,mysql ,jdk ,canal admin,canal server  ,zookeeper,kafka;

canal 集群搭建还是比较容易上手的,没有难度。

安装并启动zookeeper

1.从zookeeper 官网下载zookeeper-3.5.9-bin.tar.gz 并解压,运行bin目录下zkServer.cmd

windows环境搭建canal集群同步binlog到Kafka_第2张图片

安装kafka

1.从kakfa 官网下载 kafka_2.11-2.2.0.tgz解压,执行.\bin\windows\kafka-server-start.bat .\config\server.properties 

windows环境搭建canal集群同步binlog到Kafka_第3张图片

2.创建binlog topic 执行创建topic 命令,然后查看topic已创建

.\windows\kafka-topics.bat --create --topic sync_demo_db_binlog_topic --partitions 5  --replication-factor 1  --bootstrap-server localhost:9092

.\windows\kafka-topics.bat --describe --topic sync_demo_db_binlog_topic --bootstrap-server localhost:9092

windows环境搭建canal集群同步binlog到Kafka_第4张图片

安装canal admin并创建集群

1.从官网下载canal.admin-1.1.5.tar.gz 并解压,因为admin 本身元数据存储在mysql,需要执行canal_manager.sql 创建库表,然后修改config/application.yaml 配置mysql 信息:

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: root
  password: 123456
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false

2.点击 bin目录下startup.bat,启动admin,访问 http://localhost:8089/登录账号为admin/123456

windows环境搭建canal集群同步binlog到Kafka_第5张图片

3. 创建canal 集群

windows环境搭建canal集群同步binlog到Kafka_第6张图片

 4.创建完之后,点击主配置,进去之后点击载入模板(重要);

windows环境搭建canal集群同步binlog到Kafka_第7张图片

 5.修改如下配置,保存

kafka.bootstrap.servers = 127.0.0.1:9092
canal.serverMode=kafka
canal.mq.topic=sync_demo_db_binlog_topic
canal.zkServers=127.0.0.1:2181

安装canal server

1.下载canal.deployer-1.1.5.tar.gz 解压,删除canal.properties,修改canal-lcoal.properties为canal.properties。

添加如下配置,如果要部署主备架构,可以在另一台集群以同样方式部署deployer,修改下register ip,register.name;admin 地址需修改为admin所在机器地址。

# register ip 本机ip
canal.register.ip =127.0.0.1

# canal admin 的地址
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 =sync_demo_db_binlog
canal.admin.register.name = sync_demo_db_binlog-master

2.点击bin目录下startup.bat 启动canal server,admin查看server已经成功启动了

三、同步binlog 到kafka

 创建instance

1.在admin平台,点击创建instance,设置instance名,配置binlog 的mysql 连接信息并保存

## mysql serverId ,保证和mysql 以及其他canal-server不冲突即可canal.instance.mysql.slaveId=1234 # position info,配置mysql信息canal.instance.master.address=127.0.0.1:3306
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal
canal.instance.connectionCharset = UTF-8
#监听word 库 下user表
canal.instance.filter.regex=world\\.user  

windows环境搭建canal集群同步binlog到Kafka_第8张图片

2.保存之后查看instance正常运行了

 

数据库准备

1数据库设置权限

[mysqld]  
#mysql 修改配置
log-bin=mysql-bin # 开启 
binlogbinlog-format=ROW 
# 选择 ROW 模式server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
#账号授权
CREATE USER canal IDENTIFIED BY 'canal'; 
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;FLUSH PRIVILEGES;

.数据库创建world库,user表

CREATE TABLE `user` (
  `id` int NOT NULL,
  `user_name` varchar(255) DEFAULT NULL,
  `city` varchar(255) DEFAULT NULL,
  `created_date` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

验证canal 同步binlog 到kakfa

2.向user表插入一条记录

windows环境搭建canal集群同步binlog到Kafka_第9张图片

2.打开kafka 安装包,执行消费者命令,查看已经消费binlog消息


 .\windows\kafka-console-consumer.bat --topic sync_demo_db_binlog_topic --from-beginning --bootstrap-server localhost:9092

你可能感兴趣的:(es,mysql,数据库)