9 spb3732

尚未进行身份认证

暂无相关简介

等级
TA的排名 26w+

mysql binlog日志(二) FORMAT_DESCRIPTION_EVENT、XID_EVENT等

本节介绍几种常用的binlog event。FORMAT_DESCRIPTION_EVENT: 该事件是binlog文件的第一个事件。描述了版本信息、各种类型event的post_header的长度、checksum算法。对应的格式如下: 内容 offset:length // bi...

2019-10-24 19:58:58

mysql binlog日志(一)概述

mysql binlog是mysql主备复制的基础。笔者根据自己的理解整理下这部分的内容(主要针对V4版本的binlog),希望能够对想深入学习和研究这部分内容的人提供帮助。在binlog相关内容讲解完毕后,会分享一个解析binlog文件的程序,有兴趣的同学参考该程序进入更深入的研究。mysql支持多种binlog event。参考binlog_event.h::Log_event_type数...

2019-10-14 15:09:41

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:50:28

redis跳表的实现

看了redis的跳表的源码,感觉代码的实现非常短小精悍。redis中跳表主要实现:增删改查, 除了这几个常规功能之外,还有一个很牛逼且很实用的功能:获取节点的rank排名、或者获取指定范围rank的节点。redis中跳表的实现typedef struct zskiplistNode {robj *obj; double score; // ...

2019-05-30 11:20:03

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

CSV存储引擎源码解析

csv存储引擎是mysql自带的一种简单的存储引擎,可以直接处理CSV文件。该存储引擎特点:1.所有的列不能为NULL2.不支持索引3.不支持分区表4.该存储引擎的数据文件是普通的csv文件,可以直接拷贝出来使用或编辑。该存储引擎工作原理:1.该存储引擎每个表有一个元数据文件,文件名:表名.CSM。格式如下: offset 长度 ...

2018-11-24 19:59:31

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

mysql配置文件和启动参数的处理

概述本文简单梳理了mysql配置文件和启动参数的读取和解析过程相关处理源码load_defaults函数: 这个函数在mysqld_main函数开始的地方调用,注意load_default_groups参数:mysqld、server、mysql5.7,表示该函数只处理配置文件中这些group的内容。init_default_directories:设置配置文件的初始化目录。后...

2018-11-06 17:02:44

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

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

mysql报文通信:基本结构介绍

mysql client和server端之间的的数据根据不同的协议规则的进行组织发送。每包数据在发送的时候都要添加上协议头。mysql源码采用5.7.10版本。协议头:           每个协议头共4个字节          包数据长度:              前三个字节表示数据部分的长度(不包括协议头),三字节能表示的最大长度是16M-1(2^24 - 1),如果要发...

2018-09-28 18:42:44

oracle DDL锁超时问题

oracle数据库在执行truncate table的时候报错: ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired该问题原因是oracle在执行DDL操作时,DML操作已经对该对象加锁,由于DDL获取锁超时导致的。模拟场景:1.在session1中首先向一个表插入一...

2018-01-22 13:55:04

ORA-25153: Temporary Tablespace is Empty 错误处理

一个生产环境现场报错:ORA-25153: Temporary Tablespace is Empty 该现场前几天由其他同事重建过控制文件,怀疑是控制文件导致。处理步骤如下:1. 首先查询临时文件是否存在:     可以看到数据库确实没有指定数据文件。  2. 查询数据库正在运行控制文件内容: alter  database  backup controlfile t...

2018-01-19 15:25:23

Optimize Table整理MySQL表空间

Optimize Table table_name 该命令会整理表的数据和索引的物理存储内容,可以减少磁盘空间、提高I/O的访问效率。该命令对不同存储引擎下的表作用不同。Optimize Table适用场景:   1. InnoDB表做了大量的insert、update、delete操作,并且每个表一个ibd文件(设置了innodb_file_per_table值为ON)。  2.  ...

2018-01-04 13:06:45

Mysql 复制介绍

MySQL 复制执行流程:1. Master上语句执行解释之前,将更新数据库的操作记录在二进制日志中(select语句不记录)。2.Master上有个转储线程,读取二进制日志文件的内容发送到slave机器的I/O线程上。3.slave I/O线程接收数据写入中继日志。4.salve的sql线程从中继日志读取并执行  如果主机和备机要穿越网络,为保证安全性,可以配置S...

2017-12-26 19:46:26

oracle 临时表性能下降

oracle生产环境上有个存储过程运行一段时间之后性能下降。初步定位后发现是临时表的插入性能降低:insert into  临时表A (...) select ... from ... .      其中select .. from ...的速度很快,1w多条记录,查询时间几乎是0秒临时表A是会话级的临时表,建表语句:       Create Global Temporary Tab...

2017-12-22 14:35:13

MySQL数据库备份和恢复方案小结

这两天在调研MySQL数据库的备份和恢复方案,备份对象是对大量Innodb表,或者加上少量的MyISAM表。 InnoDB备份常见问题:文件一致性:数据文件、缓存、日志文件必须保持严格一致。加锁的方法没法保证一致性,因为InnoDB后台刷新数据是异步进行的。数据一致性:不能一次锁住一张表,这个备份的是不同时刻的表数据;如果一次锁住所有表,innodb的mvcc机制会增加undo日志...

2017-12-20 20:08:11
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。