canal-基于mysql的增量数据同步安装配置

canal-基于mysql的增量数据同步安装配置

早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。 ps. 目前内部版本已经支持mysql和oracle部分版本的日志解析,当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48)

mysql主从同步工作原理

从上层来看,复制分成三步: master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看); slave将master的binary log events拷贝到它的中继日志(relay log); slave重做中继日志中的事件,将改变反映它自己的数据。

canal的工作原理:

原理相对比较简单: canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 mysql master收到dump请求,开始推送binary log给slave(也就是canal) canal解析binary log对象(原始为byte流)

canal安装

1.下载解压很据自己需求选择版本

地址:https://github.com/alibaba/canal/releases

2.创建mysql的canal用户

mysql> CREATE USER ‘canal’@’%’ IDENTIFIED BY ‘canal’;

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘canal’@’%’ WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

3、修改canal配置文件

root@mysql04 ~]# vi  canal/conf/example/instance.properties ################################################# ## mysql serverId canal.instance.mysql.slaveId=0 # position info canal.instance.master.address=127.0.0.1:3306     ##这里改成自己的数据库地址,本机可以不动 canal.instance.master.journal.name= canal.instance.master.position= canal.instance.master.timestamp=

# table meta tsdb info canal.instance.tsdb.enable=true canal.instance.tsdb.dir=${canal.file.data.dir:../conf}/${canal.instance.destination:} canal.instance.tsdb.url=jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL; #canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb canal.instance.tsdb.dbUsername=canal canal.instance.tsdb.dbPassword=canal

#canal.instance.standby.address = #canal.instance.standby.journal.name = #canal.instance.standby.position = #canal.instance.standby.timestamp = # username/password canal.instance.dbUsername=canal    ###改成自己数据库用户 canal.instance.dbPassword=canal    ###改成自己数据库密码 canal.instance.defaultDatabaseName=databasename ###改成自己数据库 canal.instance.connectionCharset=UTF-8   ###改成自己数据库编码格式 # table regex canal.instance.filter.regex=.*\\..* # table black regex canal.instance.filter.black.regex= #################################################

4.启动关闭canal

/自己安装路径/canal/bin/startup.sh

/自己安装路径canal/bin/stop.sh

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

Elasticsearch入门介绍

ES是一个高扩展的、开源的、全文检索的搜索引擎,它提供了近实时的索引、搜索、分析功能。 ES文档翻译与总结参考:ES知识汇总 应用场景 1 它提供了强大...

22390
来自专栏JavaEdge

MySQL的分库分表1分库分表的几种形式2分片前的准备

44860
来自专栏北京马哥教育

用Kibana和logstash快速搭建实时日志查询、收集与分析系统

日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日志详情 监控系统的运行状况 统计分析,比如接...

39450
来自专栏IT技术精选文摘

有赞MySQL自动化运维之路—ZanDB

一、前言 在互联网时代,业务规模常常出现爆发式的增长。快速的实例交付,数据库优化以及备份管理等任务都对DBA产生了更高的要求,单纯的凭借记忆力去管理那几十套DB...

29880
来自专栏zhangdd.com

zabbix监控-清理zabbix 历史数据

zabbix运行一段时间之后,会留下大量的历史 数据,会发现zabbix的数据库一直在增大。运行3个月后笔者的数据库达到了5.7G,可能造成系统性能下降,查看历...

35810
来自专栏IT技术精选文摘

网站海量数据和高并发解决方案(一)

现在无论是企业的业务系统还是互联网上的网站程序都面临着数据量大的问题,这个问题如果解决不好将严重的影响系统的运行速度,下面就针对这个问题的各种解决解决方案进行介...

46750
来自专栏编程

java缓存技术总结

一、什么是缓存 1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问 2、凡是位于速度相差较大的两种硬件/软件之间的,...

57350
来自专栏Python

CentOS下使用crontab+mysqldump实现定时自动备份数据库

最主要的原因:尽可能地减少损失,包括时间上、精神上和金钱上的损失。很多人都不注意备份数据,以致在发生问题后丢失大量的重要数据。要知道,在地球上网是很危险的,即使...

10100
来自专栏杨建荣的学习笔记

海量数据迁移之误操作和防范建议(r3笔记第22天)

在生产环境的数据迁移中,发生误操作真是很不愿意看到,今天自己总结了一下,从个人的经验来看有以下的几种操作或者是失误导致的问题。有一些错误自己已经犯过。 外键 ...

35280
来自专栏数据和云

MySQL Group Replication 学习笔记

作者简介 ? 刘伟 云和开创高级顾问 题记:group replication作为mysql官方,在5.7版本阶段开发的,innodb的分布式数据库架构,从发...

37060

扫码关注云+社区

领取腾讯云代金券