安装canal 高可用集群

   日期:2020-05-31     浏览:136    评论:0    
核心提示:背景研发伙伴的需求,需要监控mysql增量数据,想通过canal-client发送到java flink上。canal是什么:canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。参考文档:https://github.com/alibaba/canal/canal 工作原理canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQ大数据

目录

  • 背景
  • 环境
  • 本地安装
    • 一、安装mysql
    • 二、安装canal server
    • 三、安装canal admin和zookeeper
      • 1. 安装canal admin(UI)
      • 2.安装zookeeper
      • 3. 配置canal admin 页面

背景

研发伙伴的需求,需要监控mysql增量数据,想通过canal-client发送到java flink上。

  • canal是什么
    canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

  • canal 工作原理
    canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流)

参考文档:https://github.com/alibaba/canal/

环境

均为Centos7.2,配置:内存4G,磁盘40G,2CPU。

服务名 IP/域名 端口(均默认)
mysql 10.10.11.141 3306
canal admin 172.16.16.108 8090
zookeeper 172.16.16.108 2181
canal01 172.16.16.108 11110
canal02 10.10.11.142 11110

NOTE:

  1. IP地址是自己瞎写的,为了方便看。
  2. 个人觉得zookeeper和canal admin都是可选的,不影响canal server的运行,只是配置了canal admin可以从网页上登录,zookeeper有canal server HA 状态日志,看起来方便。
  3. 在这里是把canal admin、canal、zookeeper安装在一台机器上了,其实这几个服务可以分别安装在任何联网机器上的哈。

本地安装

一、安装mysql

参考文档:安装mysql
对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下
(阿里云RDS默认都配置好了,可以直接跳过这一步)

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

NOTE:这里可能会报错提示密码强度太低,可以降低mysql密码强度(全局的,不建议)或者改为复杂密码。

二、安装canal server

  1. 访问 release 页面,下载canal server
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz

  1. 解压
mkdir /opt/canal.deployer
tar zxvf canal.deployer-1.1.4.tar.gz -C /opt/canal.deployer
cd /opt/canal.deployer;ll

  1. 修改配置文件
    这里的canal.properties可以理解为canal server配置,example即instance配置,可以理解为配置多个(无关联的)mysql
cp -ra conf/example/ conf/iris-mysql-141
vi conf/iris-mysql-141/instance.properties

修改如下:

## mysql serverId
canal.instance.mysql.slaveId = 1234
#position info,需要改成自己的数据库信息
canal.instance.master.address = xxxx.com:3306 
#username/password,需要改成自己的数据库信息
canal.instance.dbUsername = <远程登录mysql的账号>  
canal.instance.dbPassword = <密码>
canal.instance.defaultDatabaseName =
canal.instance.connectionCharset = UTF-8
#table regex
canal.instance.filter.regex = .\*\\\\..\*
canal.instance.filter.black.regex=mysql..*

canal.instance.mysql.slaveId,如果想配置canal server HA(即主从两台,高可用模式)取值要不同
canal.instance.connectionCharset 代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1

  1. 启动
cd bin
./startup.sh

启动成功后会自动生成“canal.pid”文件,记录canal server进程日志

  1. 验证
    1)查看配置
cd conf/iris-mysql-141/;ll

自动生成了“h2.mv.db”

2)查看日志

cd logs		#canal里会记录canal server 启动是否成功,iris-mysql-141记录我配置的instance日志
tail -f iris-mysql-141/iris-mysql-141.log


  1. 关闭
sh bin/stop.sh

踩坑记录:
当同样安装第二个canal server时,发现启动后没有生成“h2.mv.db”和日志文件,找了好半天,最后看日志发现它不认识主机名,即需要在/etc/hosts中配置本机IP和主机名
vi /etc/hosts

172.16.16.108 GEOTSTCANAL01

三、安装canal admin和zookeeper

1. 安装canal admin(UI)

参考官方文档即可:https://github.com/alibaba/canal/wiki/Canal-Admin-QuickStart

2.安装zookeeper

目前单机模式,后面会做集群

  1. Install java
yum -y install java
  1. Download zookeeper
    这里有个坑,官网给了两个,其中“apache-zookeeper-3.5.8.tar.gz ”是源码,我们要下载“apache-zookeeper-3.5.8-bin.tar.gz”这个
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.8/
tar zxvf apache-zookeeper-3.5.8-bin.tar.gz -C /opt/
mv zookeeper-3.5.8 zookeeper
ln -s /opt/zookeeper /usr/local/zookeeper
  1. 创建数据目录
mkdir -p /opt/zookeeper/data
  1. 修改配置文件
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
clientPort=2181
  1. 添加环境变量,vi /etc/profile
## zookeeper env
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH

使环境变量生效

source /etc/profile
  1. 启动zookeeper
zkServer.sh start
jps                                            ## 查看进程
zkServer.sh status                    ## 查看状态
zkServer.sh stop
  1. 设置开机启动,vi /etc/rc.d/rc.local
su - root -c zkServer.sh start

3. 配置canal admin 页面

登录:http://ip:8089/
默认账号/密码:admin/123456
PS:如果登录失败,有可能是canal admin中“”中配置的登录mysql的账号权限不够
吐槽一下:这个页面上的配置很鸡肋,有些必须填写,但又不生效(即使页面改了,也不会同步到服务器上)。

  1. 新建一个集群
    ZK地址:即zookeeper地址
  2. 新建server
    端口默认:11110
  3. 新建instance
    ️这里instance名字要和canal server上的一致才行

    成功界面

    测试:如果停掉当前server,instance会先停止几秒,再跑到另外机器上。
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服