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

一、什么是canal

1.定位

Canal是阿里巴巴开源的一款基于mysql数据库binlog增量日志分析提供数据订阅和消费功能的组件

2.原理

282a39105bd756db9998d158b9c965b1.pngCanal模拟MySQL Slave协议,将自己伪装成MySQL Slave,将Master发送dump协议

Master将binlog同步到Slave(这里是Canal)

Canal解析binlog,可以做相关的后续操作,如同步发送到MQ,或同步到其他存储系统如ES

二、canal能做什么数据库镜像

数据库实时备份

多级索引 (卖家和买家各自分库索引)

search build

业务cache刷新

价格变化等重要业务消息

三、canal服务端安装

1.MySQL主节点配置(1)开启binlog

修改mysql的配置文件,添加以下内容:

log-bin=mysql-bin

binlog-format=ROW

server-id=1

log-bin : 指定二进制日志文件的文件名,也是开启binlog的开关

binlog-format : binlog的日志格式,必须设置成ROW

server-id : 主节点的编号(不能与slave和canal的server-id相同)

修改配置后,请重启mysql

(2)为slave账户授权

通过mysql客户端连接到mysql服务器

创建用于复制的账号(设置账号和密码)

CREATE USER canal IDENTIFIED BY'canal';

为创建的账号授权

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

刷新权限

FLUSH PRIVILEGES

2.下载源码(1)下载二进制包

下载最新的稳定包

(2)编译成二进制包

3.修改配置

修改实例配置conf/example/instance.properties

# position info

canal.instance.master.address=127.0.0.1:3306

canal.instance.master.journal.name=

canal.instance.master.position=

canal.instance.master.timestamp=

canal.instance.master.gtid=

# username/password

canal.instance.dbUsername=canal

canal.instance.dbPassword=canal

canal.instance.connectionCharset=UTF-8

canal.instance.defaultDatabaseName=test

# table regex

canal.instance.filter.regex=.*\\..*

# table black regex

canal.instance.filter.black.regex=

主要配置说明:

连接的master节点配置canal.instance.mysql.slaveId : 当前节点伪装成的slave的编号(1.0.26后自动生成,不用设置)

canal.instance.master.address : 主节点的地址

账号设置canal.instance.dbUsername : 用于复制的账号的用户名

canal.instance.dbPassword : 用于复制的账号的密码

canal.instance.connectionCharset : 连接数据库编码设置

表设置canal.instance.filter.regex : 只关注的表(正则表达式),这里 .*\\..* 表示所有

4.启动canalbin/startup.sh

5.查看日志logs/canal/canal.log : 查看服务的日志

logs/example/example.log : canal实例服务日志

logs/example/meta.log : 数据变更日志(有数据后自动生成)

6.检测canal搭建是否成功(1)通过客户端进入mysql服务器,查看binlog查看主节点状态,获取二进制文件名称

show master status;

a1054934e7dd1503e3f9732557528233.png查找当前二进制日志的位置

show binlog eventsin'mysql-bin.000009';

注:这上语句还可以添加以下参数:

from : 起始的position位置

limit : 读取的起始offset和limit条数

584f4e55605b919c60b24c06b6809613.png(2)打开数据变量日志文件tail-200flogs/example/meta.log

c333221b036a2b5404b3a5f6e7310e3e.png(3)变更数据触发数据同步

通过客户端变更数据,如插入数据、修改数据或删除数据操作

查看前两个步骤的日志,比较两个position是否相同

7.canal其他操作bin/stop.sh : 关闭canal

bin/restart.sh : 重启canal

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

etmvc mysql乱码_Etmvc学习文档

关于etmvc的视图我们来探讨etmvc如何使用视图,前面关于“Action方法”的介绍中我们提到,每个请求将会映射到一个Action方法。etmvc将根据Action方法的返回类型来决定使用何种视图,大体有以下三种:1返回void时将使用JSP视图。2返回…

工具系列:TensorFlow决策森林_(8)组合决策森林和神经网络模型

文章目录 介绍安装 TensorFlow Decision Forests导入库数据集模型结构模型训练评估决策森林下一步是什么? 介绍 欢迎来到TensorFlow Decision Forests(TF-DF)的模型组合教程。本教程将向您展示如何使用通用的预处理层和Keras函数式API将多个…

mysql为什么选innodb_为什么现在的MySQL都要使用innoDB引擎-Go语言中文社区

1.MyISAMMyISAM是mysql5.1及之前版本的默认引擎,很久未被更新。使用表级锁, 如果数据量大,一个插入操作锁定表后,其他请求都将阻塞。支持全文索引支持查询缓存保存表的总行数,使用count(*) 并且无where子句的时候可以很…

mysql与文件_MySQL——文件

构成MySQL数据库的各种类型文件,包括:参数文件日志文件socket文件(套接字方式连接时需要)pid文件(mysql实例进程id)MySQL表结构文件存储引擎文件(每个存储引擎自己用来保存数据的文件)关键词参数文件参数类型生命周期与关键字sessionglobal日志文件错误日…

mysql2017windows安装_mysql的windows安装

1.删除所有的目录,只保留datasharebin2.删除BIN下面除以下三个文件之外的所有文件:libmysql.dll(MYSQL5中的文件,在MYSQL5.5中不存在)mysqladmin.exemysqld.exe3.如果要用客户端,请保留mysql.exe4.删除Share目录下除以下目录外的所…

mysql 建表时建立索引_mysql 分享建表和索引的几点规范

一、 MySQL建表,字段需设置为非空,需设置字段默认值。二、 MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL。三、 MySQL建表,如果字段等价于外键,应在该字段加索引。四、 MySQL建表&a…

有关于mysql自增型需要返回id_关于mysql自增id,你需要知道的

关于mysql自增id,你需要知道的,主键,重启,索引,类型,字段关于mysql自增id,你需要知道的易采站长站,站长之家为您整理了关于mysql自增id,你需要知道的的相关内容。导读:在使用MySQL建表时,我们通常会创建一个…

python 调用不存在的方法 统一处理_提取不重复数据在Excel、SQL与Python中的处理方法...

村长今天跟大家简单分享一下如何在Excel、SQL和Python中用不同的方法提取不重复值(数据去重)。一、Excel1.1、函数法(数组公式)函数公式:IFERROR(INDEX(A:A,SMALL(IF(MATCH($A$2:$A$16,$A$2:$A$16,0)ROW($1:$15),ROW($2:$16),9^9),ROW(A1))),"")1.2、技巧…

友盟渠道统计mysql_cnzz友盟怎么安装网站统计代码监控网站流量

GC算法http://www.brpreiss.com/books/opus5/html/page424.html http://www.brpreiss.com/books/opus5/html/page4 ...python 定时任务Python 定时任务 最近学习到了 python 中两种开启定时任务的方法,和大家分享一下心得. sched.scheduler() threading.Timer() sched 定时任务…

rpm安装mysql5.5_CentOS下以RPM方式安装MySQL5.5

1、查找以前是否装有mysql命令:rpm -qa|grep -i mysql可以看到mysql的两个包:mysql-4.1.12-3.RHEL4.1mysqlclient10-3.23.58-4.RHEL4.12、删除mysql删除命令:rpm -e --nodeps 包名( rpm -ev mysql-4.1.12-3.RHEL4.1 )3、删除老版本mysql的开发…

tensorflow是python自带的吗_python-Tensorflow-没有名为’_pywrap_tensorflow_int...

目前,我正在尝试使tensorflow-我的PC上运行Windows 64位(仅cpu版本).运行命令python object_detection / builders / model_builder_test.py时出现以下错误.我在网上搜索,有99%的答案是使用cd,我认为我已经尝试过了,但是那没用.我之所以说“我认为”,是因为我不知道…

python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例

本篇文章小编给大家分享一下python爬虫实现爬取同一个网站的多页数据代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。一、爬虫的目的从网上获取对你有需要的数据二、爬虫…

python调用百度语音实时转为文字_百度语音转文字 (Python)

感受好久没写中文技术文章了。说实话,学东西都是基于英文,或者 别人从英文翻译成中文 咱们再捡二手货学习。因此用中文写技术文章怎么都感受是在骗人,怎么都以为很别扭。编程可是这一次的主角是百度。框架虽然认真来说,全部编程语…

yum安装mysql5.7 简书_阿里云服务器(centos7.3)上安装jdk、tomcat、mysql、redis

前言:平时我们敲的项目,只能在本地浏览,不论项目写得怎么样只有自己看得到,只有发布到了云服务器,别人才能访问得到。学习之路就是这样,当别人能访问自己的项目时,会更有成就感,所以接下来就一起…

卸载源码安装mysql_CentOS7下源码安装MySQL5.7.6+

卸载CentOS7默认携带的mariadb包# 检查mariadb安装包[rootwing ~]# rpm -qa | grep -i mysql[rootwing ~]# rpm -qa | grep -i mariadbmariadb-libs-5.5.50-1.el7_2.x86_64# 卸载mariadb安装包[rootwing ~]# rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64error: Failed dependenc…

android paint 线宽_android Paint 设置线宽setStrokeWidth()的单位

首先画一个空心的矩形框,代码如下:public class MainActivity extends Activity {Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ImageView image (ImageView…

python绘制四边螺旋线代_解决python彩色螺旋线绘制引发的问题

彩色螺旋线的绘制代码如下:import turtleimport timeturtle.pensize(2)turtle.bgcolor(black)colors [red, yellow, purple, blue]turtle.tracer(False)for x in range(400):turtle.forward(2*x)turtle.color(colors[x % 4])turtle.left(91)turtle.tracer(True)tim…

java的excel导出_java 实现excel 导出功能

1 //导出数据2 //SELECT SUBSTRING(create_time,1,10) s,COUNT(*) FROM data_read WHERE data_id IN (SELECT data_id FROM DATA WHERE model_id2 OR model_id27) GROUP BY s3 RequestMapping(params "methodoutData",method RequestMethod.GET)4 public voidoutCom…

java如何让线程阻塞_Java中如何使一个线程进入阻塞态?

按我的理解,当一个线程需要获取的锁被另一个线程占用时,将进入阻塞态。但实际好像不是这样的,下面是我的代码。在run方法中会调用MyBlock的isBlocked方法,该方法添加了synchronized限定。在main方法中创建两个线程:t1和…

java监听焦点事件_【Java Swing公开课|Java Swing焦点事件监听器怎么用,看完这篇文章你一定就会了】- 环球网校...

【摘要】作为一门面向对象编程语言,Java吸收了C语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的相关内容&…