Canal MySQL日志同步Redis (包含在Docker上安装)-----上

Canal简介

canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(本次使用5.6,5.7也兼容,8.0没有尝试,可以试试,如果不行就降版本).

canal 工作原理

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

Docker安装

Docker安装可以参照官网
https://docs.docker.com/engine/install/centos/

设置镜像仓库可以使用阿里云镜像

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

Mysql安装(Docker)

注意:Docker在更换版本的时候要把挂载在外面的文件删除不然有可能启动不了
安装其他版本自己改后面的就行
建议去docker hub中搜索
https://hub.docker.com/

docker pull mysql:5.6

安装完后开启容器

#将容器内的/etc/mysql/conf.d挂载到本地/home/mysql/conf路径 
/home/mysql/conf:/etc/mysql/conf.d 

下一个-v 也同样的道理 data一定要挂载出来不然容器删了数据库就没了(删库跑路)

#你的数据库密码  账号默认root
-e MYSQL_ROOT_PASSWORD= 

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.6

Mysql配置

centos中进入mysql安装目录,找到my.cnf文件打开

#端口号
port = 3306 
#开启mysql的binlog写入功能
log-bin=mysql-bin 
#配置binlog模式为row
binlog_format=ROW 
#不能和canal的slaveId重复
server_id=1 
#配置同步的数据库名
binlog-do-db=newbuds 
 #忽略的数据库
binlog-ignore-db=  

Docker配置Mysql

进入home/mysql/conf目录并创建my.cnf文件
在文件内编写上面配置即可

检查配置是否生效

Docker进入方式不一样

mysql是自己容器名不要搞错了
docker exec -it mysql /bin/bash

相同

root 为自己的账号
mysql -u root -p

输入密码进入mysql

检查配置

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+

与上面相同就配置文件生效了
创建canal用户并授权限

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

到这里mysql安装和配置就完成了。接下来安装canal

安装canal

Linux安装Canal与配置
安装1.1.4其他版本自己选择就好了
https://github.com/alibaba/canal/releases/tag/canal-1.1.4

选择这个文件下载

下载之后压缩包传到Linux中我这里放在/usr/canal文件夹中

解压文件
tar -xzvf canal.deployer-1.1.4.tar.gz

文件内有两个配置文件
canal.properties这个不用修改
(我这里使用宝塔操作的用Linux一样的)
在这里插入图片描述
进入example目录
在这里插入图片描述
编辑这个文件

#数据库的IP和端口
#如果canal和mysql分开在不用的服务器就将127.0.0.1换成服务器的就好了
canal.instance.master.address=127.0.0.1:3306

#数据库名字
canal.instance.dbUsername=newbuds

#数据库密码
canal.instance.dbPassword=123456

使用 sh startup.sh 运行
在这里插入图片描述
这里可以查看日志,运行完后建议在这里查看下日志
在这里插入图片描述
Docker安装Canal与配置

拉取镜像
docker pull canal/canal-server

启动
docker run -p 11111:11111 --name canal -d canal/canal-server

之前试过将文件挂载出来,但是运行不了,配置文件直接找不到,所以就直接在容器内编辑了(在容器内编辑需要安装vim 后面会讲到)。

这样就是启动好了,会发现有四个端口,其实在这个镜像里面内置了许多其他的东西JDK1.8等,所以也就导致镜像比较大

[root@instance-v74dxgvu conf]# docker ps -a
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                    PORTS                                                     NAMES
53ff801dd0eb        canal/canal-server   "/alidata/bin/main.s…"   5 hours ago         Up 5 hours                2222/tcp, 8000/tcp, 11112/tcp, 0.0.0.0:11111->11111/tcp   canal

以下就是其他的内置东西
在这里插入图片描述
启动之后进入容器

docker exec -it canal  /bin/bash

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200529201549316.png

在这里插入图片描述
到这里就和Linux上一样的了。
conf中放置了配置文件
logs中放置了日志文件

注意:在canal-server中没有vim命令需要自己安装

#更新源库
yum update

#安装vim
yum install vim

在docker中数据库的ip查看mysql的容器ip

使用127.0.0.1是连不通的

查看容器详细信息  mysql是容器名(或ID)
docker inspect mysql

在这里插入图片描述

完工

canal还可以配合其他组件一起使用,目前只用来同步redis.
明天把canal同步mysql和redis的代码放出来,目前还在调试中。

续集点下这里这里这里
续集点下这里这里这里
续集点下这里这里这里
有哪里出错了还希望可以指出来。o v o o v o o v o o v o

参考资料

https://github.com/alibaba/canal

猜你喜欢

转载自blog.csdn.net/d875708765/article/details/106430762