随笔分类 - mysql
mysql是一个开源的关系数据库,通过对mysql的源码阅读,这里主要更新的是与mysql主从复制有关的内容。
摘要:mysql交互协议是开发mysql周边组件常用的协议,如JDBC,libmysql等等。 在此我们要认识到mysql交互协议其实是半双工的交互协议,至于为什么,这里就先挖个小坑,以后再填。 在探讨mysql交互协议的格式之前,我们要理清一个小问题,就是mysql交互协议会用到的基本数据类型。 1.整
阅读全文
摘要:这次我们要探索更精细的binlog内容,上次讨论的Query_event和Rows_event肯定有让你疑惑不解的问题。Query_event中的status-vars环境变量有哪些,Rows_event的数据类型是什么,元数据又是个什么鬼东西,今天我们就来一一解答。 一、Query_event中的
阅读全文
摘要:上次,我们仅仅把binlog做了一个概述,并没有去深入探索(1)binlog file究竟是怎么构成的?(2)binlog file的单元binlog events是怎么构成的?(3)我们能不能伪造出一个mysqlbinlog识别的binlog file? 当然,第三个问题看起来很cool,蛮有挑战
阅读全文
摘要:slave IO流程已经在http://www.cnblogs.com/onlyac/p/5815566.html中有介绍 这次我们要探索注册slave请求和dump请求的报文格式和主要流程。 一、注册slave请求 在slave IO连接完数据库后,slave IO接着在主库里注册自己,以便后续不
阅读全文
摘要:最近看了slave IO的源码,发现slave IO的写relay log貌似是单线程单连接的,这让我有点小失望。 slave IO的主函数是handle_slave_io,处理流程如下: 图1 handle_slave_io处理流程 我们这次主要要完成safe_connect以及try_to_re
阅读全文
摘要:show master/slave status分别是查看主数据库以及副数据库的状态,是一种能查看主从复制运行情况的方式。 这里仅仅讨论linux下的nysql5.7.13版本的执行情况 一、show master status 开始与show global status类似,都是分配一个线程去处理
阅读全文
摘要:近来,发现好多公司对mysql的性能监控是通过show global status实现的,因此对于这个命令想要探究一番,看他是否是实时更新的。 在此之前,我们必须搞明白mysql对于这个命令的执行过程来确认它所显示的数据究竟是什么、是否实时更新以及是否准确。借这个机会,我们也可以了解客户端与mysq
阅读全文
摘要:主从同步是分布式mysql数据库相当重要的配置,现在我在虚拟机上完成主从配置,系统是CenterOS6.5,mysql版本是5.7.13 主服务器的ip是192.168.19.139 副服务器的ip是192.168.19.142 1.主服务器配置 (1)修改my.cnf(注意使用root) (2)进
阅读全文
摘要:binlog作为mysql中最重要的日志之一,能实现异常恢复以及主从复制。 我们主要讨论的是主从复制中的binlog,这里将以mysql5.7.13的源码为主要依据来分析binlog。 在主从复制中,binlog一般使用row模式,在主服务器上是binlog,在副服务器上是relaylog,在sql
阅读全文
摘要:1.使用gdb这个调试工具。 在linux使用该调试工具非常简单。它的价值非常大,可以告诉你函数相互调用的逻辑(bt命令),告诉你函数执行的情况(通过br命令以及n,c命令单步跟踪函数每一个语句的执行),告诉你每个函数变量的值(p命令)。 (1)首先打开mysql服务器 ./mysqld (2)重新
阅读全文
摘要:系统 CenterOs 6.5 1.安装依赖包(cmake make gcc等,其实好多都有了,不需要更新,为了防止世界被破坏,就装下) 2.安装boost库1.59(听高手们说,只能是这个版本,没试过其他的,懒是楼主的本性,于是菜鸟们跟着命令走吧) 3.添加用户组和用户mysql(又是参考了各种大
阅读全文