研发伙伴的需求,需要监控mysql增量数据,想通过canal-client发送到java flink上。 canal是什么 canal 工作原理 参考文档:https://github.com/alibaba/canal/ 均为Centos7.2,配置:内存4G,磁盘40G,2CPU。 NOTE: 参考文档:安装mysql 授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant NOTE:这里可能会报错提示密码强度太低,可以降低mysql密码强度(全局的,不建议)或者改为复杂密码。 修改如下: canal.instance.mysql.slaveId,如果想配置canal server HA(即主从两台,高可用模式)取值要不同 启动成功后会自动生成“canal.pid”文件,记录canal server进程日志 自动生成了“h2.mv.db” 踩坑记录: 参考官方文档即可:https://github.com/alibaba/canal/wiki/Canal-Admin-QuickStart 目前单机模式,后面会做集群 使环境变量生效 登录:https://ip:8089/目录
背景
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议 MySQL master 收到 dump 请求,开始推送 binary log 给slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流)环境
服务名
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
本地安装
一、安装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 重复
CREATE USER canal IDENTIFIED BY 'canal'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ; FLUSH PRIVILEGES;
二、安装canal server
wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz
mkdir /opt/canal.deployer tar zxvf canal.deployer-1.1.4.tar.gz -C /opt/canal.deployer cd /opt/canal.deployer;ll
这里的canal.properties可以理解为canal server配置,example即instance配置,可以理解为配置多个(无关联的)mysqlcp -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.connectionCharset 代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1
cd bin ./startup.sh
1)查看配置cd conf/iris-mysql-141/;ll
2)查看日志cd logs #canal里会记录canal server 启动是否成功,iris-mysql-141记录我配置的instance日志 tail -f iris-mysql-141/iris-mysql-141.log
sh bin/stop.sh
当同样安装第二个canal server时,发现启动后没有生成“h2.mv.db”和日志文件,找了好半天,最后看日志发现它不认识主机名,即需要在/etc/hosts中配置本机IP和主机名
vi /etc/hosts172.16.16.108 GEOTSTCANAL01
三、安装canal admin和zookeeper
1. 安装canal admin(UI)
2.安装zookeeper
yum -y install java
这里有个坑,官网给了两个,其中“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
mkdir -p /opt/zookeeper/data
cp zoo_sample.cfg zoo.cfg vi zoo.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper/data clientPort=2181
## zookeeper env export ZOOKEEPER_HOME=/opt/zookeeper export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
zkServer.sh start jps ## 查看进程 zkServer.sh status ## 查看状态 zkServer.sh stop
su - root -c zkServer.sh start
3. 配置canal admin 页面
默认账号/密码:admin/123456
PS:如果登录失败,有可能是canal admin中“”中配置的登录mysql的账号权限不够
吐槽一下:这个页面上的配置很鸡肋,有些必须填写,但又不生效(即使页面改了,也不会同步到服务器上)。
ZK地址:即zookeeper地址
端口默认:11110
⚠️这里instance名字要和canal server上的一致才行
成功界面
测试:如果停掉当前server,instance会先停止几秒,再跑到另外机器上。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算