
mysql源码
文章平均质量分 87
spb3732
这个作者很懒,什么都没留下…
展开
-
mysql binlog日志(二) FORMAT_DESCRIPTION_EVENT、XID_EVENT等
本节介绍几种常用的binlog event。FORMAT_DESCRIPTION_EVENT: 该事件是binlog文件的第一个事件。描述了版本信息、各种类型event的post_header的长度、checksum算法。对应的格式如下: 内容 offset:length // bi...原创 2019-10-25 14:22:10 · 784 阅读 · 0 评论 -
mysqlbinlog工作流程
mysqlbinlog主要流程:main函数: dump_multiple_logs: 处理所有的binlog文件 注意PRINT_EVENT_INFO print_event_info; 该变量描述了mysqlbinlog打印event的方法,ev->print函数的参数 循环调用dump_single_log函数:注意最后一个binlog文...原创 2019-09-29 16:51:03 · 458 阅读 · 0 评论 -
mysql常用数据结构介绍(1)
mem_rootmysql层通过mem_root管理内存分配,防止频繁分配和释放小内存。mem_root的定义见include/my_alloc.h:typedef struct st_mem_root{ USED_MEM *free; 空闲链表,分配空间时先检查该链表有没有剩余空间,如果没有,再分配新空间 USED_MEM *used; ...原创 2018-12-19 10:45:59 · 1977 阅读 · 0 评论 -
CSV存储引擎源码解析
csv存储引擎是mysql自带的一种简单的存储引擎,可以直接处理CSV文件。该存储引擎特点:1.所有的列不能为NULL2.不支持索引3.不支持分区表4.该存储引擎的数据文件是普通的csv文件,可以直接拷贝出来使用或编辑。该存储引擎工作原理:1.该存储引擎每个表有一个元数据文件,文件名:表名.CSM。格式如下: offset 长度 ...原创 2018-11-24 19:59:31 · 628 阅读 · 0 评论 -
Mysql 复制介绍
MySQL 复制执行流程:1. Master上语句执行解释之前,将更新数据库的操作记录在二进制日志中(select语句不记录)。2.Master上有个转储线程,读取二进制日志文件的内容发送到slave机器的I/O线程上。3.slave I/O线程接收数据写入中继日志。4.salve的sql线程从中继日志读取并执行 如果主机和备机要穿越网络,为保证安全性,可以配置S...原创 2017-12-26 19:46:26 · 342 阅读 · 0 评论 -
mysql报文通信:基本结构介绍
mysql client和server端之间的的数据根据不同的协议规则的进行组织发送。每包数据在发送的时候都要添加上协议头。mysql源码采用5.7.10版本。协议头: 每个协议头共4个字节 包数据长度: 前三个字节表示数据部分的长度(不包括协议头),三字节能表示的最大长度是16M-1(2^24 - 1),如果要发...原创 2018-09-28 18:42:44 · 1418 阅读 · 0 评论 -
mysql 账户登录的处理流程
现场环境mysql账户登录错误,用户名和密码都确认过没有问题的。报错信息如下:ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)查看1045对应的错误信息:perror 1045:MySQL error code 1045 (ER_ACCESS_DENIED_ERROR)...原创 2018-10-26 14:25:05 · 613 阅读 · 1 评论 -
mysql报文通信:报文的接收和发送函数
文章中的源码来自mysql 5.7.10版本。1. NET结构 该结构定义了网络连接描述符,本结构是实现接收和发送协议数据的核心。该结构的定义在include\mysql_com.h 定义如下:typedef struct st_net { Vio *vio; unsigned char *buff,*buff_...原创 2018-11-01 11:22:48 · 826 阅读 · 0 评论 -
mysql配置文件和启动参数的处理
概述本文简单梳理了mysql配置文件和启动参数的读取和解析过程相关处理源码load_defaults函数: 这个函数在mysqld_main函数开始的地方调用,注意load_default_groups参数:mysqld、server、mysql5.7,表示该函数只处理配置文件中这些group的内容。init_default_directories:设置配置文件的初始化目录。后...原创 2018-11-06 17:02:44 · 2163 阅读 · 0 评论 -
mysql .par文件格式解析
mysql 5.6版本分区表有一个文件:表名.par, 该文件在5.7.6版本后被移除。在一个现场环境中,客户端执行check table后报错如下,源码跟踪下来之后是缺失par文件。 mysql解析par文件的调用堆栈如下:(gdb) bt#0 ha_partition::read_par_file (this=0x7fff980aa760, name=0x7fff980...原创 2018-11-13 14:00:59 · 2602 阅读 · 0 评论