canal实现mysql数据同步

简介:最近线上系统进行压测,评估线上系统容量,根据压测情况对代理层,代码,sql等都做了相应的优化,而系统最大的瓶颈在于数据库,根据实际业务情况,决定对数据库架构进行优化升级。其中最大的一个优化方案就是把只读业务进行数据库迁移,因此有了同步线上数据库到本地数据库的需求,所以想到了阿里研发的canal中间件,下面将对canal的调研情况做详细分析。

通过官网我们可以了解到canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

可以把日志同步到MySQL,MQ,ES等渠道中,这里我们要讲的模式是mysql to mysql

工作原理

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

  • 环境准备

服务器

数据库

安装包

192.168.1.46

mysql 5.7

canal.admin-1.1.7-SNAPSHOT.tar.gz

canal.deployer-1.1.7-SNAPSHOT.tar.gz

192.168.1.51

mysql 5.7

canal.adapter-1.1.7-SNAPSHOT.tar.gz

  • 配置

canal.admin 配置

tar -zxvf canal.admin-1.1.7-SNAPSHOT.tar.gz -C canal.admin

vi conf/application.yml

初始化元数据库

mysql -h127.0.0.1 -uroot -p

# 导入初始化SQL

> source /data2/soft/canal.admin/conf/canal_manager.sql

./bin/startup.sh  启动admin

浏览器访问 ip:8089

canal-admin为canal提供了整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面

canal.depoyer端配置

1、mysql开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下

[mysqld]

log-bin=mysql-bin # 开启 binlog

binlog-format=ROW # 选择 ROW 模式

server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

2、授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

CREATE USER canal IDENTIFIED BY 'Canal!123';

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;

FLUSH PRIVILEGES;

重新启动mysql

service mysqld restart /  service mysql restart

3、配置canal.deployer

tar -zxvf canal.deployer-1.1.7-SNAPSHOT.tar.gz -C canal.deployer

主配置文件

canal.properties

子配置文件

instance.properties

./bin/startup.sh 启动deployer

canal.adapter端配置

tar -zxvf canal.adapter-1.1.7-SNAPSHOT.tar.gz -C canal.adapter

主配置文件

bootstrap.yml

需要注意这里数据库连接的配置

application.yml

这里要注意的是,上面是源mysql连接的配置,下面是目标mysql的配置。注意这里数据库驱动需要和数据库版本对应上

子配置文件

forecast_cloud_new_stations.yml

这里我配置的mapAll: true 整表映射,这样就需要源表和目标表字段一样。如果targetCloumns配置了映射,那就可以通过字段方式映射

./bin/stop.sh 停止

./bin/startup.sh  启动

看到如下日志说明已经成功实现了同步

【五】阿里巴巴 MySQL binlog 增量订阅消费组件canal实现mysql数据同步相关推荐

  1. CanalSharp-mysql数据库binlog的增量订阅消费组件Canal的.NET客户端

    一.前言 CanalSharp是阿里巴巴开源项目mysql数据库binlog的增量订阅&消费组件 Canal 的.NET客户端,关于什么是 Canal?又能做什么?我会在后文为大家一一介绍.C ...

  2. MySQL增量订阅消费组件Canal POC

    POC的目的: 1.与MYSQL的对接方式,配置文档 2.订阅的延迟 3.订阅后宕机消息会不会丢失 4.能不能从指定的点开始重新订阅 5.高并发写入的时候,日志的顺序是否还能保持,不考虑消费的情况订阅 ...

  3. canal —— 阿里巴巴mysql数据库binlog的增量订阅消费组件

    阿里巴巴mysql数据库binlog的增量订阅&消费组件canal ,转载自  https://github.com/alibaba/canal 最新更新 canal QQ讨论群已经建立,群号 ...

  4. mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解

    一. 概述 工作需要研究了下阿里开源的MySQL Binlog增量订阅消费组件canal,其功能强大.运行稳定,但是有些方面不是太符合需求,主要有如下三点: 需要自己编写客户端来消费canal解析到的 ...

  5. MySQL Binlog增量同步工具go-mysql-transfer实现详解

    go-mysql-transfer产品手册:https://www.kancloud.cn/wj596/go-mysql-transfer/2111996 一. 概述 工作需要研究了下阿里开源的MyS ...

  6. 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅消费

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...

  7. 基于mysql数据库binlog的增量订阅消费

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...

  8. [转]基于mysql数据库binlog的增量订阅消费中间件:Canal

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...

  9. mysql binlog 订阅_数据库binlog订阅和消费组件canal快速入门

    一.什么是canal 1.定位 Canal是阿里巴巴开源的一款基于mysql数据库binlog增量日志分析提供数据订阅和消费功能的组件 2.原理 Canal模拟MySQL Slave协议,将自己伪装成 ...

  10. mysql binlog 增量备份

    一,什么是增量备份 增量备份,就是将新增加的数据进行备份.假如你一个数据库,有10G的数据,每天会增加10M的数据,数据库每天都要备份一次,这么多数据是不是都要备份呢?还是只要备份增加的数据呢,很显然 ...

最新文章

  1. linux iptables详解
  2. 如何使python print输出不换行
  3. ubuntu16.04下更新UHD3.14+GNURadio3.7.13.5
  4. 如何使scp命令在主机之间复制时不用输入密码
  5. r怎么保存html文件,leaflet - 为什么在已保存的html文件中缺少传单地图上的杂项,但在Rstudio浏览器中可以正常打印呢? - 堆栈内存溢出...
  6. easyui树拖拽排序java_项目中集成Easyui-Tree,可拖拽更新节点
  7. MySQL服务端的登录和退出
  8. How to create a Python dictionary with double quotes as default quote format?
  9. linux旧版本如何升级成新版本,Linux如何升级软件版本,
  10. 漫步微积分三十——定积分的性质
  11. 其他手机安装鸿蒙系统,不是华为手机,也能用上鸿蒙系统
  12. HDU 1027 全排列
  13. 使用 virt-install 创建虚拟机
  14. 【转】中间语言(IL)和即时编译器(JIT)的关系剖析
  15. web前端设计--二级菜单栏
  16. python sys库
  17. 微信订阅消息(后端)教程
  18. 程序员应当正确突破英语障碍
  19. 库克放大招啦!一张照片生成3D头像,新模型击败StyleGAN2!
  20. CAD软件中怎么定制线图案?

热门文章

  1. css 根据屏幕宽度控制样式
  2. python实战项目之去哪旅游网数据清洗及绘制图表
  3. JAVA学习笔记(十九)
  4. 计算机c语言基础知识1到100的合的,计算机C语言基础知识大全.docx
  5. 最新最全的免费股票数据接口--沪深A股深度分析资金流向数据API接口(十三)
  6. CSP-S2022 星战
  7. win10 wifi密码修改
  8. 4月晨读反馈活动---演讲+表演
  9. java 学习路线(dake....你恶心死我算了)
  10. vue本地存储_手摸手Electron + Vue实战教程(四)