Centos7搭建Canal 1.1.4采集数据到Kafka

1.安装JDK、Zookeeper、Kafka单机版

  • 安装准备

    # 切换为命令模式
    systemctl set-default multi-user.target
    reboot
    # 配置域名映射
    vim /etc/hosts
    192.168.88.10 node1
    # 关闭防火墙,并开机禁用
    systemctl stop firewalld.service
    systemctl disable firewalld.service 
    
  • JDK的搭建

    # 卸载自带的JDK
    rpm -qa | grep java | xargs rpm -e --nodeps
    # 创建目录,并上传JDK到software指定目录
    mkdir -p /export/server /export/software && cd /export/software
    rz
    # 解压并安装JDK
    tar xf jdk-8u65-linux-x64.tar.gz -C ../server/ && cd /export/server/
    vim /etc/profile
    # 添加以下内容
    # JAVA_HOME
    export JAVA_HOME=/export/server/jdk1.8.0_65
    export PATH=$JAVA_HOME/bin:$PATH
    # 加载环境变量,并验证是否配置成功
    source /etc/profile && java -version
    
  • Zookeeper的搭建

    # 上传Zookeeper到software目录,并解压
    cd /export/software/ && rz
    tar xf zookeeper-3.4.6.tar.gz -C ../server/
    # 修改配置
    cd /export/server/zookeeper-3.4.6/conf/
    mv zoo_sample.cfg zoo.cfg
    # 配置环境变量
    vim /etc/profile
    # ZOOKEEPER_HOME
    export ZOOKEEPER_HOME=/export/server/zookeeper-3.4.6
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    # 加载环境变量
    source /etc/profile
    
  • Kafka的搭建

    # 上传Kafka到software目录,并解压
    cd /export/software/ && rz
    tar xf kafka_2.12-2.4.1.tgz -C ../server/
    # 配置环境变量
    vim /etc/profile
    # KAFKA_HOME
    export KAFKA_HOME=/export/server/kafka_2.12-2.4.1
    export PATH=$KAFKA_HOME/bin:$PATH
    # 加载环境变量
    source /etc/profile
    
  • 启动测试

    # 启动ZK和Kafka
    zkServer.sh start
    cd /export/server/kafka_2.12-2.4.1/
    kafka-server-start.sh -daemon config/server.properties
    

2.本地安装MySQL

  • 下载官网yum源并安装MySQL

    wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    yum -y install mysql80-community-release-el7-3.noarch.rpm
    
  • 修改默认安装源为MySQL5.7,并下载启动

    # 使用下面命令,可以看到默认安装源为mysql80-community版本
    yum repolist all | grep mysql
    # 取消mysql80-community的默认安装
    yum-config-manager --disable mysql80-community
    # 设置mysql57-community成为yum默认安装版本
    yum-config-manager --enable mysql57-community
    # 执行安装
    yum -y install mysql-community-server
    # 安装完成后启动mysql服务
    systemctl start mysqld
    # 因为安装了yum repository所以会自动更新,所以卸载掉repo包
    yum -y remove mysql80-community-release-el7-3.noarch
    
  • 登录MySQL

    # 查看mysql临时密码
    grep "temporary password" /var/log/mysqld.log
    # 登录MySQL
    mysql -uroot -p
    # 取消mysql密码规范限制
    set global validate_password_policy=0;
    set global validate_password_length=1;
    # 重设密码为123456,并赋予访问权限
    alter user 'root'@'localhost' identified by '123456';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    flush privileges;
    exit
    
  • 开启MySQL的Binlog日志

    vim /etc/my.cnf
    # 在[mysqld]下面,添加以下三行
    log-bin=mysql-bin # 开启 binlog
    binlog-format=ROW # 选择 ROW 模式
    server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
    # 修改my.cnf需要重启MySQL服务
    systemctl restart mysqld
    

3.Docker安装MySQL

  • 安装MySQL

    # 拉取镜像
    docker pull mysql:5.7
    # 创建容器
    docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
    
  • 开启MySQL的Binlog日志

    # 进入MySQL容器
    docker exec -it mysql bash
    # 安装vim命令
    apt-get update
    apt-get install -y vim
    vim /etc/mysql/my.cnf
    # 普通模式下输入以下内容保证可以右键粘贴
    :set mouse-=a
    # 到最后粘贴以下6行内容
    [mysqld]
    log-bin=mysql-bin #添加这一行就ok
    binlog-format=ROW #选择row模式
    server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
    expire_logs_days=7 # binlog文件保存7天
    max_binlog_size=500m # 每个binlog日志文件大小
    # 重启容器
    docker restart mysql
    

3.本机单机Canal安装

  • 授权canal链接 MySQL 账号具有作为 MySQL slave 的权限

    # 登录MySQL并授权canal账号权限
    mysql -uroot -p123456
    CREATE USER canal IDENTIFIED BY 'canal';  
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
    -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%';
    FLUSH PRIVILEGES;
    exit
    
  • 安装Canal

    # 创建Canal目录,并上传解压
    mkdir -p /export/server/canal
    cd /export/software/ && rz
    tar xf canal.deployer-1.1.4.tar.gz -C ../server/canal/
    # 修改配置文件
    cd /export/server/canal
    vim conf/canal.properties
    # 第25行和第116行
    canal.serverMode = kafka
    canal.mq.servers = node1:9092
    
    # 修改实例
    vim conf/example/instance.properties 
    # 第9行
    canal.instance.master.address=node1:3306
    # 启动Canal
    bin/startup.sh
    # 报错日志查看
    less logs/example/example.log
    

4.Docker单机Canal安装

  • 授权canal链接 MySQL 账号具有作为 MySQL slave 的权限

    # 登录MySQL并授权canal账号权限
    mysql -uroot -p123456
    CREATE USER canal IDENTIFIED BY 'canal';  
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
    -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%';
    FLUSH PRIVILEGES;
    exit
    
  • 安装Docker

    # 安装yum工具包和存储驱动
    yum install -y yum-utils device-mapper-persistent-data lvm2
    # 设置安装Docker的yum源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 安装Docker
    yum install docker-ce docker-ce-cli containerd.io
    # 启动docker,并设置开机启动
    systemctl start docker
    systemctl enable docker
    # 配置镜像加速
    vim /etc/docker/daemon.json
    {
      "registry-mirrors": [
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn"
      ]
    }
    # 加载和重启docker
    systemctl daemon-reload
    systemctl restart docker
    # 查看镜像加速是否配置成功
    docker info
    
  • 拉取镜像

    # 拉取镜像
    docker pull canal/canal-server:v1.1.4
    # 创建容器
    docker run -d --name canal-server \
    -e canal.instance.master.address=192.168.88.10:3306 \
    -e canal.instance.dbUsername=canal \
    -e canal.instance.dbPassword=canal \
    -add-host node1:192.168.88.10 \
    -p 11111:11111 \
    -d canal/canal-server:v1.1.4
    
  • 修改容器canal配置

    # 进入容器
    docker exec -it canal-server bash
    # 修改配置
    cd /home/admin/canal-server
    vi conf/canal.properties
    # 第25行和第116行
    canal.serverMode = kafka
    canal.mq.servers = 192.168.88.10:9092
    # 修改实例,第9行
    vi conf/example/instance.properties
    canal.instance.master.address=192.168.88.10:3306
    # 启动
    bin/startup.sh
    

5.测试

  • 使用Kafka创建一个example的Topic

  • 连接MySQL进行测试

    CREATE DATABASE test;
    use test;
    
    CREATE TABLE test.user(
    	id int(11) NOT NULL,
    	name varchar(255) DEFAULT NULL,
    	age int(11) DEFAULT NULL,
    	PRIMARY KEY (id)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    INSERT INTO test.user (id, name,age) VALUES (1, 'aa',10);
    UPDATE test.user SET name = 'bb' WHERE id = 1;
    DELETE  FROM test.user WHERE id = 1;
    
  • 测试多种方案搭配,遇到canal的position问题

    # 进入canal的目录删除对应实例的meta.dat文件,从新启动
    rm rf conf/example/meta.dat
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值