大数据学习之搭建canal

开启mysql binlog

默认没有开启

开启binlog之后mysql的性能会手动影响

1、修改mysql配置文件/etc/my.cnf

# 如果配置文件不存在,复制一个过来
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

# 修改mysql配置文件
vim /etc/my.cnf 

# 在配置文件中增加二配置
# 需要将配置放在[mysqld]后面
# 打开binlog
log-bin=mysql-bin
# 选择ROW(行)模式
binlog-format=ROW
# 配置MySQL replaction需要定义,不要和canal的slaveId重复
server_id=1

2、重启mysql

# 重启mysql服务
systemctl restart mysqld

# 查看mysql binlog文件
cd /var/lib/mysql
mysql-bin.000001

# 改了配置文件之后,重启MySQL,使用命令查看是否打开binlog模式:
mysql -uroot -p123456
show variables like 'log_bin';

搭建Canal

2、上传解压,上传到soft目录

# 创建解压目录
mkdir canal
# 解压到指定目录
tar -xvf canal.deployer-1.1.7.tar.gz -C canal

3、修改配置文件conf/example/instance.properties

vim conf/example/instance.properties

# mysql 地址
canal.instance.master.address=master:3306
# mysql用户名
canal.instance.dbUsername=root
# mysql密码
canal.instance.dbPassword=123456
# 数据写入kafka 的topic名称, 所有的数据写入同一个topic
#canal.mq.topic=example
# 为每一个表自动创建一个topic
# 监控student数据库,不同的表发送到表名的topic上, topic命令方式bigdata.student
canal.mq.dynamicTopic=student\\..*

4、修改配置文件conf/canal.properties

vim conf/canal.properties

# zk地址 
canal.zkServers = master:2181/kafka
# 数据保存到kafka
canal.serverMode = kafka
# kafka集群地址
canal.mq.servers = master:9092,node1:9092,node2:9092

5、启动canal

cd /usr/local/soft/canal/bin/
# 启动canal
./startup.sh

# 查看启动日志
cd /usr/local/soft/canal/logs
cat canal/*
cat example/*

5、测试

在test数据库创建一个订单表,并且执行几个简单的DML:

-- 登录mysql
mysql -uroot -p123456

create database student;

-- 切换数据库
use `student`;

-- 创建表
CREATE TABLE `order`
(
    id          BIGINT UNIQUE PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
    order_id    VARCHAR(64)   COMMENT '订单ID',
    amount      DECIMAL(10, 2) COMMENT '订单金额',
    create_time DATETIME       COMMENT '创建时间',
    UNIQUE uniq_order_id (`order_id`)
) COMMENT '订单表';

-- 插入数据

INSERT INTO `order`(order_id, amount) VALUES ('10087', 999);
UPDATE `order` SET amount = 99 WHERE order_id = '10087';
DELETE  FROM `order` WHERE order_id = '10087';


6、可以利用Kafka的kafka-console-consumer消费数据

# 查看是否自动创建topic
kafka-topics.sh --list  --zookeeper  master:2181/kafka
# 消费数据
kafka-console-consumer --bootstrap-server cdh01:9092 --from-beginning --topic student.order

7、在flink中读取canal采集的数据

SET 'sql-client.execution.result-mode' = 'tableau';

drop table if exists `order`;
CREATE TABLE `order` (
    id          BIGINT  COMMENT '主键',
    order_id    STRING   COMMENT '订单ID',
    amount      DECIMAL(10, 2) COMMENT '订单金额',
    create_time TIMESTAMP(3)       COMMENT '创建时间'
) WITH (
  'connector' = 'kafka',
  'topic' = 'example',
  'properties.bootstrap.servers' = 'master:9092',
  'properties.group.id' = 'testGroup',
  'scan.startup.mode' = 'earliest-offset',
  'format' = 'canal-json',
  'canal-json.ignore-parse-errors' = 'true'
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值