加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

万字分享,我是怎样一步一步监控公司MySQL的?

发布时间:2020-08-15 10:31:42 所属栏目:编程 来源:网络整理
导读:写在前边 在家长途办公第三周,快被手机上的动静搞的有些神经质了,恐怕错过一条有效的信息,没步伐形势云云,公司风雨飘摇各人也都如履薄冰,事实这时辰赋闲有点惨( 穷怕了 )。 但就干活来嗣魅照旧较量安逸的,和在公司上班对比,安逸下来许多碎片时刻,
副问题[/!--empirenews.page--]

万字分享,我是怎样一步一步监控公司MySQL的?

写在前边

在家长途办公第三周,快被手机上的动静搞的有些神经质了,恐怕错过一条有效的信息,没步伐形势云云,公司风雨飘摇各人也都如履薄冰,事实这时辰赋闲有点惨(穷怕了)。

但就干活来嗣魅照旧较量安逸的,和在公司上班对比,安逸下来许多碎片时刻,可以随意的做点本身喜好的工作。并且我发明,人一但闲下来真的是好可骇,隐藏的才气会全面发作,我女伴侣这个抖音深度患者,一年不做一回饭的主,一周内接连给我做了两顿暗中收拾,烤馒头版“蛋糕”、浆糊版“凉皮”,然后我就与茅厕结下来不解之缘。。。

不外,作为一个措施员,我对暗中收拾是不太感乐趣滴,闲下来照旧喜好进修钻研一些新颖的技能,canal就成了很好的研究工具,一不警惕就监控了公司MySQL的一举一动的

一、canal是个啥?

canal是阿里开拓的一款基于数据库增量日记理会,提供增量数据订阅与斲丧的框架,整个框架纯JAVA开拓,今朝仅支持Mysql和MariaDB(和mysql相同)。

那什么是数据库增量日记?

MySQL的日记种类是较量多的,首要包括:错误日记、查询日记、慢查询日记、事宜日记、二进制日记。而MySQL数据库所产生的数据改观(DML(data manipulation language)数据哄骗说话,也就是我们认识的增编削),城市以二进制日记(binary log)情势存储。

二、canal道理

在先容canal道理之前,我们先往返首一下MySQL主从同步的道理,这或者会让你更好的领略canal的事变机制。

1、MySQL主从同步道理:

MySQL主从同步也叫读写疏散,可以晋升数据库的负载和容错手段,实现数据库的高可用

先来说明一张MySQL主从同步道理图:

以上图片源自收集,若有侵权接洽删除

master节点操纵进程:

当master节点数据产生变动后(delete、update、insert,照旧建设函数、存储进程等操纵),向binary log中写入记录日记,这些记录又叫做二进制日记变乱(binary log events)。

show binlog events 

万字分享,我是怎样一步一步监控公司MySQL的?

这些变乱会凭证次序写入bin log中。当slave节点启动毗连到master节点的时辰,master节点会为slave节点开启binlog dump线程(认真传输binlog数据)。

一旦master节点的bin log产生变革时,bin logdump线程会关照slave节点有可以传输的binlog,并将响应的bin log内容发送给slave节点。

slave节点操纵进程:

slave节点上会建设两个线程:一个I/O线程,一个SQL线程。I/O线程毗连到master节点,master节点上的binlog dump 线程会将binlog的内容发送给该IO线程。

该I/O线程吸取到binlog内容后,再将内容写入到当地的relay log。而sql线程读取到I/O线程写入的ralay log,将relay log中的内容写入slave数据库。

2、canal道理

懂了上边MySQL的主从同步道理,canal的事变机制就很好领略了。着实canal是模仿了MySQL数据库中,slave节点与master节点的交互协议,伪装本身为MySQL slave节点,向MySQL master节点发送dump协议,MySQL master节点收到dump哀求,开始推送binary log给slave节点(也就是canal)。

以上图片源自收集,若有侵权接洽删除

光说不做假把式,开干!

三、canal实现“监控”MySQL

在写代码前我们先对MySQL举办一下改革,安装MySQL就不再细说了,根基操纵。

1、查察一下MySQL是否开启了binary log成果

show binary logs 

假如没有开启是图中的状态,一样平常用户是没有这个呼吁权限的,不外我有,啧啧啧!

假如没有必要手动开启,而且在my.cnf文件中设置binlog-format 为Row模式

log-bin=mysq-binbinlog-format=Row

log-bin是binlog文件存放位置binlog-format 配置MySQL复制log-bin的方法

MySQL的三种复制方法:

基于SQL语句的复制(statement-based replication, SBR)

利益:将修改数据的sql生涯在binlog,不必要记录每一条sql和数据变革,binlog体量会很小,IO开销少,机能好

弱点:会导致master-slave中的数据纷歧致

基于行的复制(row-based replication, RBR)

利益:不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了

弱点:binlog体积很大,尤其是在alter table属性时,会发生大量binlog数据

殽杂模式复制(mixed-based replication, MBR)

对应的,binlog的名目也有三种:STATEMENT,ROW,MIXED。

2、为canal 建设一个有权限操纵MySQL的用户

CREATE USER canal IDENTIFIED BY 'canal';  GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;FLUSH PRIVILEGES;

3、安装canal

下载地点:https://github.com/alibaba/canal/releases

下载后选择版本譬喻:canal.deployer-xxx.tar.gz

4、设置canal

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读