【五】阿里巴巴 MySQL binlog 增量订阅消费组件canal实现mysql数据同步
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数据同步相关推荐
- CanalSharp-mysql数据库binlog的增量订阅消费组件Canal的.NET客户端
一.前言 CanalSharp是阿里巴巴开源项目mysql数据库binlog的增量订阅&消费组件 Canal 的.NET客户端,关于什么是 Canal?又能做什么?我会在后文为大家一一介绍.C ...
- MySQL增量订阅消费组件Canal POC
POC的目的: 1.与MYSQL的对接方式,配置文档 2.订阅的延迟 3.订阅后宕机消息会不会丢失 4.能不能从指定的点开始重新订阅 5.高并发写入的时候,日志的顺序是否还能保持,不考虑消费的情况订阅 ...
- canal —— 阿里巴巴mysql数据库binlog的增量订阅消费组件
阿里巴巴mysql数据库binlog的增量订阅&消费组件canal ,转载自 https://github.com/alibaba/canal 最新更新 canal QQ讨论群已经建立,群号 ...
- mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解
一. 概述 工作需要研究了下阿里开源的MySQL Binlog增量订阅消费组件canal,其功能强大.运行稳定,但是有些方面不是太符合需求,主要有如下三点: 需要自己编写客户端来消费canal解析到的 ...
- MySQL Binlog增量同步工具go-mysql-transfer实现详解
go-mysql-transfer产品手册:https://www.kancloud.cn/wj596/go-mysql-transfer/2111996 一. 概述 工作需要研究了下阿里开源的MyS ...
- 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...
- 基于mysql数据库binlog的增量订阅消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...
- [转]基于mysql数据库binlog的增量订阅消费中间件:Canal
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...
- mysql binlog 订阅_数据库binlog订阅和消费组件canal快速入门
一.什么是canal 1.定位 Canal是阿里巴巴开源的一款基于mysql数据库binlog增量日志分析提供数据订阅和消费功能的组件 2.原理 Canal模拟MySQL Slave协议,将自己伪装成 ...
- mysql binlog 增量备份
一,什么是增量备份 增量备份,就是将新增加的数据进行备份.假如你一个数据库,有10G的数据,每天会增加10M的数据,数据库每天都要备份一次,这么多数据是不是都要备份呢?还是只要备份增加的数据呢,很显然 ...
最新文章
- linux iptables详解
- 如何使python print输出不换行
- ubuntu16.04下更新UHD3.14+GNURadio3.7.13.5
- 如何使scp命令在主机之间复制时不用输入密码
- r怎么保存html文件,leaflet - 为什么在已保存的html文件中缺少传单地图上的杂项,但在Rstudio浏览器中可以正常打印呢? - 堆栈内存溢出...
- easyui树拖拽排序java_项目中集成Easyui-Tree,可拖拽更新节点
- MySQL服务端的登录和退出
- How to create a Python dictionary with double quotes as default quote format?
- linux旧版本如何升级成新版本,Linux如何升级软件版本,
- 漫步微积分三十——定积分的性质
- 其他手机安装鸿蒙系统,不是华为手机,也能用上鸿蒙系统
- HDU 1027 全排列
- 使用 virt-install 创建虚拟机
- 【转】中间语言(IL)和即时编译器(JIT)的关系剖析
- web前端设计--二级菜单栏
- python sys库
- 微信订阅消息(后端)教程
- 程序员应当正确突破英语障碍
- 库克放大招啦!一张照片生成3D头像,新模型击败StyleGAN2!
- CAD软件中怎么定制线图案?
热门文章
- css 根据屏幕宽度控制样式
- python实战项目之去哪旅游网数据清洗及绘制图表
- JAVA学习笔记(十九)
- 计算机c语言基础知识1到100的合的,计算机C语言基础知识大全.docx
- 最新最全的免费股票数据接口--沪深A股深度分析资金流向数据API接口(十三)
- CSP-S2022 星战
- win10 wifi密码修改
- 4月晨读反馈活动---演讲+表演
- java 学习路线(dake....你恶心死我算了)
- vue本地存储_手摸手Electron + Vue实战教程(四)