CanalAdmin搭建Canal Server集群
CanalAdmin搭建Canal Server集群
一、背景
使用CanalAdmin来搭建一个canal集群。
二、机器情况
| 服务名 | 机器ip | 备注 |
|---|---|---|
| canal admin | 127.0.0.1:8089 | canal admin 机器 |
| canal server 1 | 127.0.0.1:11111 | 本地canal server机器 |
| canal server 2 | 127.0.0.1:11113 | 本地canal server机器 |
| zk | 127.0.0.1:2181, 127.0.0.1:3181, 127.0.0.1:4181 |
本地zk集群 |
| mysql | 127.0.0.1:3306 | 本地mysql |
三、实现步骤
1、下载canal admin
# 下载
$ wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.admin-1.1.5.tar.gz
# 解压,解压会产生多个目录 bin、conf等,最好新建一个文件夹,然后在解压
tar -zxvf canal.admin-1.1.5.tar.gz
2、配置canalAdmin

3、初始化canal admin数据库

4、启动canal admin
bin/startup.sh
5、登录canal admin

6、新建集群

7、集群配置
多个canal server同一个 canal 配置。(此处主要配置的是 canal.properties)

# 需要修改的配置项
# zk 的地址需要指定
canal.zkServers = 127.0.0.1:2181,127.0.0.1:3181,127.0.0.1:4181
# tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = tcp
# 此配置需要修改成 default-instance
canal.instance.global.spring.xml = classpath:spring/default-instance.xml
# 这个不需要指定,在admin上手动添加
canal.destinations =
8、canal server端配置
下载canal server
$ wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
1、第一台canal server的配置
vim canal_local.properties
# register ip
# canal server注册到外部zookeeper、admin的ip信息
canal.register.ip = 127.0.0.1
# canal server 的端口
canal.port = 11111
# canal server 的metrics 端口
canal.metrics.pull.port = 11112
# canal admin config
canal.admin.manager = 127.0.0.1:8089
# admin端口,canal 1.1.4版本新增的能力,会在canal-server上提供远程管理操作,默认值11110
canal.admin.port = 11110
# canal admin 应用下 canal.adminUser 的值
canal.admin.user = admin
# canal admin 应用下 canal.adminPasswd 下的值,但是需要通过 select password('${canal.adminPasswd}')获取,需要去掉前面的*号
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
# 是否开启自动注册模式
canal.admin.register.auto = true
# 可以指定默认注册的集群名,如果不指定,默认注册为单机模式,集群的名字需要在 canal admin上存在
canal.admin.register.cluster = canal_local
# 注册到 canal admin 上server的名字,唯一有意义即可
canal.admin.register.name = canal_server_01
2、第二台canal server的配置
vim canal_local.properties
# register ip
# canal server注册到外部zookeeper、admin的ip信息
canal.register.ip = 10.223.40.76
# canal server 的端口
canal.port = 11113
# canal server 的metrics 端口
canal.metrics.pull.port = 11114
# canal admin config
canal.admin.manager = 127.0.0.1:8089
# admin端口,canal 1.1.4版本新增的能力,会在canal-server上提供远程管理操作,默认值11110
canal.admin.port = 11110
# canal admin 应用下 canal.adminUser 的值
canal.admin.user = admin
# canal admin 应用下 canal.adminPasswd 下的值,但是需要通过 select password('${canal.adminPasswd}')获取,需要去掉前面的*号
canal.admin.passwd = 4ACFE3202A5FF5CF467898FC58AAB1D615029441
# admin auto register
# 是否开启自动注册模式
canal.admin.register.auto = true
# 可以指定默认注册的集群名,如果不指定,默认注册为单机模式,集群的名字需要在 canal admin上存在
canal.admin.register.cluster = canal_local
# 注册到 canal admin 上server的名字,唯一有意义即可
canal.admin.register.name = canal_server_01
9、启动canal server
bin/startup.sh local

本地启动 canal server 后,发现已经注册到 canal admin上了,这是因为canal.deployer里的配置文件canal_local.properties里的canal.admin.register.auto = true导致的。即上一步的配置。
10、在admin上配置一个instance
可以使用 admin 上的 载入模板来实现。
# mysql集群配置中的serverId概念,需要保证和当前mysql集群中id唯一 (v1.1.x版本之后canal会自动生成,不需要手工指定)
# canal.instance.mysql.slaveId=0
# mysql主库链接地址
canal.instance.master.address=127.0.0.1:3306
# mysql主库链接时起始的binlog文件
canal.instance.master.journal.name=
# mysql主库链接时起始的binlog偏移量
canal.instance.master.position=
# mysql主库链接时起始的binlog的时间戳
canal.instance.master.timestamp=
# mysql数据库帐号(此处的用户名和密码为 安装canal#mysql配置相关#创建canal用户 这一步创建的用户名和密码)
canal.instance.dbUsername=canal
# mysql数据库密码
canal.instance.dbPassword=canal
# mysql 数据解析编码
canal.instance.connectionCharset = UTF-8
# mysql 数据解析关注的表,Perl正则表达式,即我们需要关注那些库和那些表的binlog数据,也可以在canal client api中手动覆盖
canal.instance.filter.regex=.*\\..*
# table black regex
# mysql 数据解析表的黑名单,表达式规则见白名单的规则
canal.instance.filter.black.regex=mysql\\.slave_.*
11、查看那个canal server是正在运行中的

四、注意事项
1、集群模式下,canal.properties中的canal.instance.global.spring.xml 的值必须是 classpath:spring/default-instance.xml。主配置下,也需要指定zk的地址,不需要指定canal.destinations的值。

2、本地的canal.deployer 使用的配置文件是canal_local.properties,建议写最小的配置,其余的在admin上统一维护。
3、本地canal.deployer的启动采用 bin/startup.sh local即带上 local参数。
cd /Users/huan/soft/canal/ha-deployer/deployper02
bin/startup.sh local
4、集群模式下,虽然有多个canal server,但是只有一个是处于active状态,客户端连接的canal server是自动连接active状态的canal server。
- 可以在
zookeeper上通过如下命令查看。
get /otter/canal/destinations/{instance的名字}/running
{"active":true,"address":"127.0.0.1:11111"}
- 也可以在多个canal server下的logs目录下,看instance的日志(eg: logs/customer/customer.log),只会看到一台机器上出现了启动成功的日志。
5、数据消费成功后,canal server会在zookeeper中记录下当前最后一次消费成功的binlog位点. (下次你重启client时,会从这最后一个位点继续进行消费)
get /otter/canal/destinations/{instance的名字}/1001/cursor
{"@type":"com.alibaba.otter.canal.protocol.position.LogPosition","identity":{"slaveId":-1,"sourceAddress":{"address":"localhost","port":3306}},"postion":{"gtid":"","included":false,"journalName":"mysql-bin.000016","position":123620,"serverId":1,"timestamp":1622699246000}}
6、canal client也支持HA,同时启动2个一样的客户端,只有一个可以消费到数据。
五、参考链接
1、https://github.com/alibaba/canal/wiki/Canal-Admin-QuickStart
2、https://github.com/alibaba/canal/wiki/AdminGuide
3、https://github.com/alibaba/canal/wiki/Canal-Admin-Guide
4、https://github.com/alibaba/canal/wiki/Canal-Admin-ServerGuide
CanalAdmin搭建Canal Server集群的更多相关文章
- spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群
一 .搭建Eureka 编写Eureka Server 由于有多个spring boot项目,采用maven多module的结构,项目结构如下: 新建一个maven主工程,在主maven的pom文件中 ...
- Linux下搭建Lotus Domino集群
Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...
- (2-2)SpringCloud-服务注册到Eureka Server集群并消费
服务注册到Eureka Server集群 在(2-1)SpringCloue-Eureka实现高可用注册中心中我们搭建好了高可用的Eureka注册中心,下面我们要把服务注册到Eureka Server ...
- 虚拟机搭建Zookeeper服务器集群完整笔记
虚拟机搭建Zookeeper服务器集群完整笔记 本笔记主要记录自己搭建Zookeeper服务器的全过程,默认已经安装部署好Centos7. 一.虚拟机下Centos无法联网解决方案 1.首先调整虚拟机 ...
- Storm环境搭建(分布式集群)
作为流计算的开篇,笔者首先给出storm的安装和部署,storm的第二篇,笔者将详细的介绍storm的工作原理.下边直接上干货,跟笔者的步伐一块儿安装storm. 原文链接:Storm环境搭建(分布式 ...
- 搭建zookeeper+kafka集群
搭建zookeeper+kafka集群 一.环境及准备 集群环境: 软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或 ...
- centos7搭建ELK Cluster集群日志分析平台(三):Kibana
续 centos7搭建ELK Cluster集群日志分析平台(一) 续 centos7搭建ELK Cluster集群日志分析平台(二) 已经安装好elasticsearch 5.4集群和logst ...
- 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!
转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208 版权声明:本文为博主 ...
- hadoop搭建伪分布式集群(centos7+hadoop-3.1.0/2.7.7)
目录: Hadoop三种安装模式 搭建伪分布式集群准备条件 第一部分 安装前部署 1.查看虚拟机版本2.查看IP地址3.修改主机名为hadoop4.修改 /etc/hosts5.关闭防火墙6.关闭SE ...
随机推荐
- 交换机之vlan详解
一.为什么需要VLAN 1.1.什么是VLAN? VLAN(Virtual LAN),翻译成中文是"虚拟局域网".LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算 ...
- view+element+java登陆验证码
一.前端: 1.页面标签: <el-row :gutter="20"> <el-col :span="24"> <el-input ...
- CommonsBeanutils1 分析笔记
1.PropertyUtils.getProperty commons-beanutils-1.9.2.jar 包下的 PropertyUtils#getProperty方法相对于getXxx方法,取 ...
- 编译执行 VS 解释执行
一般编译程序从对源程序执行途径的角度不同,可分为解释执行和编译执行. 所谓解释执行是借助于解释程序完成,即按源程序语句运行时的动态结构,直接逐句地边分析边翻译并执行.像自然语言翻译中的口译,随时进行翻 ...
- composer 包 slim使用案例,一个简单的路由解决方案
nginx配置文件修改 location / { try_files $uri /index.php$is_args$args; } 设置好nginx伪静态,把所有的请求方式都转向到index.php ...
- error: subscripted value is neither array nor pointer问题解决
在运行程序的时候报错:error: subscripted value is neither array nor pointer 原因分析:下标值不符合数组或指针要求,即操作的对象不允许有下标值. 出 ...
- PTA 面向对象程序设计 7-1 2017Final 圆周率山
7-1 2017Final 圆周率山 为了参加学校的社团风采展,怡山小学数学组的同学们决定画一座圆周率山,以宣传圆周率. 已知圆周率为:3. 1415926535 8979323846 2643383 ...
- 【C++周报】第二期 2021-8-19
这次我们照样看一道题.个人认为比上一次的简单. https://vijos.org/p/1130 先说方法,动态规划,你能想到什么? "在它的左边加上一个自然数,但该自然数不能超过原数的一半 ...
- c++ 打包函数教程
c++当要重复运行一些代码时可以打包一个函数 当没有返回值时用void打包函数: #include <iostream> #include <stdio.h> using na ...
- libcurl 概述(翻译)
l名称 libcurl 客户端 URL 传输 描述 这是一个如何使用libcurl进行C语言编程的简短概述.这里提到的每个功能都有特定的手册页.还有 libcurl-easy 手册页,libcurl- ...