利用canal同步MySQL中数据到redis(docker)

该博客详细介绍了如何使用Docker安装MySQL8.0、Redis6.0,并配置MySQL的远程访问以及启用binlog。接着,博主讲解了Canal的安装和配置,包括其工作原理、MySQL开启binlog模式的步骤以及Canal的核心配置。最后,展示了如何检查安装是否成功并查看日志。
摘要由CSDN通过智能技术生成

1.docker安装mysql8.0.27

#拉取MySQL8镜像
docker pull mysql:8.0
#创建MySQL目录并打开
mkdir ~/mysql
cd mysql/
创建并运行容器
docker run -id \
-p 3306:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0

安装时终端显示: 

 进入mysql容器

docker exec -it mysql /bin/bash

进入MySQL

mysql -uroot -p123456

 允许root用户远程访问

#切换数据库
use mysql;
#查看当前用户
select user,host,plugin,authentication_string from user;
#host:访问主机--改成%
#user:访问用户名
#plugin:认证方式(密码加密方式)--改成mysql_native_password
#authentication_string:密码加密后的一长串字符

#将访问主机改成任意
update user set host='%' where user='root';
#开通所有权限
GRANT ALL ON *.* TO 'root'@'%';
#mysql8加密规则为caching-sha2-password,需要修改为mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的数据库密码';

修改后的user表

 本地navicat连接

 2.docker安装redis6.0

#拉取redis镜像
docker pull redis:6.0
#创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:6.0

 3.canal

3.1canal简介

原理相对比较简单:
1. canal 模拟 mysql slave 的交互协议,伪装自己为 mysql slave ,向 mysql master 发送 dump 协议
2. mysql master 收到 dump 请求,开始推送 binary log slave( 也就是 canal)
3. canal 解析 binary log 对象 ( 原始为 byte ) canal需要使用到 mysql, canal 是基于mysql 的主从模式实现的,所以必须先开启 binlog.

3.2 mysql开启binlog模式

先使用 docker 创建 mysql 容器 , 此处不再演示 .
(1) 连接到 mysql , 并修改 /etc/mysql/my.conf 需要开启主 从模式,开启 binlog 模式。 执行如下命令,编辑mysql配置文件.
#进入mysql容器
docker exec -it mysql /bin/bash
#安装vim
apt-get update
apt-get install vim
#编辑mysql配置文件
vi /etc/mysql/my.conf

#######################################
#在文件当中加入:
log-bin=/var/lib/mysql/mysql-bin 
server-id=12345
binlog_format=ROW
sync-binlog=1

mysql配置文件: 

(2) 创建账号用于测试使用 , 使用root 账号创建用户并授予权限
#创建canal用户
create user canal@'%' IDENTIFIED by 'canal'; 
#授权
GRANT ALL ON *.* TO 'canal'@'%';
#同安装mysql原理
ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal';
FLUSH PRIVILEGES;
(3) 重启 mysql 容器
docker restart mysql

3.3 canal容器安装

下载镜像:
docker pull docker.io/canal/canal-server
容器安装
docker run -p 11111:11111 --name canal -d docker.io/canal/canal-server
进入容器 , 修改核心配置 canal.properties instance.properties canal.properties canal 自身的配
置, instance.properties 是需要同步数据的数据库连接配置。
执行代码如下 :
docker exec -it canal /bin/bash 
cd canal-server/conf/ 
vi canal.properties 
cd example/ 
vi instance.properties
修改 canal.properties id ,不能和 mysql server-id 重复,如下图:

 修改instance.properties,配置数据库连接地址:

取消这行注释:

 配置完成后,设置开机启动,并记得重启canal

#自启
docker update --restart=always canal 
#重启canal
docker restart canal

 查看日志:

#查看example.log
cd canal-server/logs/example/
cat example.log

#查看canal.log
cd canal-server/logs/canal/
cat canal.log

正常启动的example.log 

 正常启动的canal.log

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch、MySQL和Canal是三种不同的技术,可以用于数据存储和数据同步。下面是针对它们的类型配置的解释: 1. Elasticsearch类型配置: Elasticsearch 是一个开源的分布式搜索引擎和分析工具。在Elasticsearch,我们可以定义索引(index)、类型(type)和文档(document)。索引是一个逻辑上的容器,用于存储相关的文档。类型则是索引的一个逻辑分类,用于区分不同类型的文档。每个文档则是具体的数据记录。可以通过配置类型映射(mapping)来定义类型各个字段的数据类型和属性。 2. MySQL类型配置: MySQL是一种关系型数据库管理系统。在MySQL,我们可以创建数据库(database)、表(table)和列(column)。数据库是一个逻辑容器,用于存储相关的表。表是一组具有相同结构的数据记录。每个表可以定义各个列的数据类型和属性。通过创建索引(index)和外键(foreign key),可以进一步优化查询和保障数据一致性。 3. Canal类型配置: Canal 是阿里巴巴开源的一款数据同步工具,用于将MySQL数据库的数据变更事件捕获并推送到外部系统。它可以订阅MySQL的binlog,解析出数据变更的类型、位置和内容,并通过配置的方式将这些变更推送到目标系统。在配置Canal时,我们需要定义数据源(source),目标系统(target)和数据过滤规则(filter)。源和目标可以是MySQL数据库,也可以是其他系统。过滤规则可以用于指定感兴趣的表、列或数据操作类型,以实现精确的数据同步。 综上所述,Elasticsearch、MySQL和Canal都需要进行类型配置,分别用于定义数据存储和数据同步的相关设置。这些配置可以根据具体的需求进行调整,以实现更好的性能和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值