美文网首页
SpringCloud Alibaba之Canal ( 数据同步

SpringCloud Alibaba之Canal ( 数据同步

作者: 索性流年 | 来源:发表于2020-04-27 16:35 被阅读0次

本文为学习笔记

来自蚂蚁课堂
链接:http://www.mayikt.com/

基本概念

项目地址

简介

  • canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
  • 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

MySQL 和 Redis 能否保障强一致性?

  • 只要是微服务,很难保证强一致性问题,都是最终一致性

增量和全量的区别?

  • 增量是实时的操作,对 MySQL 增删改行为进行订阅与消费
  • 全量是在指定时间进行同步,将所有数据统一同步

MySQL主备复制原理

  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
  • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

主从复制的作用

  • 对数据实现备份
  • 实现读写分离
  • 实现故障转移
  • 集群

canal 工作原理

  • canal会启动一个 Server 端 作为 MySQL 从节点拉取主节点最新的binary log 文件
  • MySQL 主节点 binary log 文件一旦发生改变都会以增量的形式通知给canalServer 端
  • canalServer 将接收到的文件发送 canalClient 端 手动配置刷新同步

使用

1.配置MySQL配置

  • 开启允许基于binlog文件主从同步
  • windows 下配置文件为 my.ini
  • linux 下配置文件为 my.cnf
vi /etc/my.cnf
  • 增加 log-bin 订阅
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式 
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
  • 配置该文件后,重启mysql服务器即可
#个人安装路径
cd /usr/local/mysql/bin
#重启 MySQL 服务
service mysql restart

检查是否开启log_bin 命令(ON 开启)

./mysql -u root -p  #输入密码
show variables like 'log_bin';
image.png

退出

 \q

构建CanalService 端

项目下载地址

image.png
  • 上传至 Linux /usr/local 目录下
  • 修改、配置文件配置
/usr/local/canal.deployer-1.1.5-SNAPSHOT/conf/example/instance.properties
  • 这里是测试用的 root账户,如若正式环境最好单独创建账号
  • Canal 整合 RocketMQ
#数据库连接地址
canal.instance.master.address=127.0.0.1:3306
#数据库连账号
canal.instance.dbUsername=root
#数据库连接密码
canal.instance.dbPassword=root

整合 RocketMQ

/usr/local/canal.deployer-1.1.5-SNAPSHOT/conf/example/instance.properties
#设置 mq 连接 
canal.mq.topic=mysql-redis-topic
  • 修改 canal.properties
/usr/local/canal.deployer-1.1.5-SNAPSHOT/conf/canal.properties
#修改模式
canal.serverMode = rocketMQ
#修改 RocketMQ 服务地址
rocketmq.namesrv.addr = 127.0.0.1:9876

启动

  • 进入 bin 目录
 cd /usr/local/canal.deployer-1.1.5-SNAPSHOT/bin
  • 在 Linux 运行
./startup.sh
  • 在 Windows 下双击 startup.bat
  • 查看 /usr/local/canal.adapter-1.1.5-SNAPSHOT/logs/adapter/adapter.log
image.png

停止运行

cd /usr/local/canal.deployer-1.1.5-SNAPSHOT/bin
./stop.sh

相关文章

网友评论

      本文标题:SpringCloud Alibaba之Canal ( 数据同步

      本文链接:https://www.haomeiwen.com/subject/kuglvhtx.html