<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[spb3732的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/spb3732</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; spb3732]]></copyright><item><title><![CDATA[mysql binlog日志（二） FORMAT_DESCRIPTION_EVENT、XID_EVENT等]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/102730707</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/102730707</guid><author>spb3732</author><pubDate>Fri, 25 Oct 2019 14:22:10 +0800</pubDate><description><![CDATA[本节介绍几种常用的binlog event。

FORMAT_DESCRIPTION_EVENT： 该事件是binlog文件的第一个事件。描述了版本信息、各种类型event的post_header的长度、checksum算法。对应的格式如下：

       内容                offset：length
    // bi...]]></description><category></category></item><item><title><![CDATA[mysql binlog日志（一）概述]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/102548639</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/102548639</guid><author>spb3732</author><pubDate>Mon, 14 Oct 2019 19:43:24 +0800</pubDate><description><![CDATA[mysql binlog是mysql主备复制的基础。笔者根据自己的理解整理下这部分的内容（主要针对V4版本的binlog），希望能够对想深入学习和研究这部分内容的人提供帮助。在binlog相关内容讲解完毕后，会分享一个解析binlog文件的程序，有兴趣的同学参考该程序进入更深入的研究。

mysql支持多种binlog event。参考binlog_event.h::Log_event_type数...]]></description><category></category></item><item><title><![CDATA[mysqlbinlog工作流程]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/101700450</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/101700450</guid><author>spb3732</author><pubDate>Sun, 29 Sep 2019 16:51:03 +0800</pubDate><description><![CDATA[mysqlbinlog主要流程：

main函数：
  dump_multiple_logs： 处理所有的binlog文件
    注意PRINT_EVENT_INFO print_event_info; 该变量描述了mysqlbinlog打印event的方法，ev-&gt;print函数的参数
   循环调用dump_single_log函数：注意最后一个binlog文...]]></description><category></category></item><item><title><![CDATA[redis跳表的实现]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/90692165</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/90692165</guid><author>spb3732</author><pubDate>Thu, 30 May 2019 11:20:03 +0800</pubDate><description><![CDATA[看了redis的跳表的源码，感觉代码的实现非常短小精悍。

redis中跳表主要实现：增删改查， 除了这几个常规功能之外，还有一个很牛逼且很实用的功能：获取节点的rank排名、或者获取指定范围rank的节点。

redis中跳表的实现

typedef struct zskiplistNode {

robj *obj;   

double score;    // ...]]></description><category></category></item><item><title><![CDATA[mysql常用数据结构介绍（1）]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/85089168</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/85089168</guid><author>spb3732</author><pubDate>Wed, 19 Dec 2018 10:45:59 +0800</pubDate><description><![CDATA[mem_root

mysql层通过mem_root管理内存分配，防止频繁分配和释放小内存。

mem_root的定义见include/my_alloc.h:


typedef struct st_mem_root
{
  USED_MEM *free;              空闲链表，分配空间时先检查该链表有没有剩余空间，如果没有，再分配新空间
  USED_MEM *used;     ...]]></description><category></category></item><item><title><![CDATA[CSV存储引擎源码解析]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/84451381</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/84451381</guid><author>spb3732</author><pubDate>Sat, 24 Nov 2018 19:59:31 +0800</pubDate><description><![CDATA[csv存储引擎是mysql自带的一种简单的存储引擎，可以直接处理CSV文件。

该存储引擎特点:

1.所有的列不能为NULL

2.不支持索引

3.不支持分区表

4.该存储引擎的数据文件是普通的csv文件，可以直接拷贝出来使用或编辑。

该存储引擎工作原理:

1.该存储引擎每个表有一个元数据文件，文件名：表名.CSM。格式如下:


			offset
			
			
			长度
			
...]]></description><category></category></item><item><title><![CDATA[mysql .par文件格式解析]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/84027307</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/84027307</guid><author>spb3732</author><pubDate>Tue, 13 Nov 2018 14:00:59 +0800</pubDate><description><![CDATA[mysql 5.6版本分区表有一个文件：表名.par, 该文件在5.7.6版本后被移除。

在一个现场环境中，客户端执行check table后报错如下，源码跟踪下来之后是缺失par文件。



 

mysql解析par文件的调用堆栈如下：

(gdb) bt
#0  ha_partition::read_par_file (this=0x7fff980aa760, name=0x7fff980...]]></description><category></category></item><item><title><![CDATA[mysql配置文件和启动参数的处理]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/83786722</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/83786722</guid><author>spb3732</author><pubDate>Tue, 06 Nov 2018 17:02:44 +0800</pubDate><description><![CDATA[概述

本文简单梳理了mysql配置文件和启动参数的读取和解析过程

相关处理源码

load_defaults函数：

 这个函数在mysqld_main函数开始的地方调用，注意load_default_groups参数：mysqld、server、mysql5.7，表示该函数只处理配置文件中这些group的内容。

init_default_directories：设置配置文件的初始化目录。后...]]></description><category></category></item><item><title><![CDATA[mysql报文通信：报文的接收和发送函数]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/82889165</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/82889165</guid><author>spb3732</author><pubDate>Thu, 01 Nov 2018 11:22:48 +0800</pubDate><description><![CDATA[文章中的源码来自mysql 5.7.10版本。

1. NET结构

             该结构定义了网络连接描述符，本结构是实现接收和发送协议数据的核心。该结构的定义在include\mysql_com.h

                 定义如下：


typedef struct st_net {

  Vio *vio;

  unsigned char *buff,*buff_...]]></description><category></category></item><item><title><![CDATA[mysql 账户登录的处理流程]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/83412343</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/83412343</guid><author>spb3732</author><pubDate>Fri, 26 Oct 2018 14:25:05 +0800</pubDate><description><![CDATA[现场环境mysql账户登录错误，用户名和密码都确认过没有问题的。报错信息如下：

ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)

查看1045对应的错误信息：

perror 1045：MySQL error code 1045 (ER_ACCESS_DENIED_ERROR)...]]></description><category></category></item><item><title><![CDATA[mysql报文通信：基本结构介绍]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/82886503</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/82886503</guid><author>spb3732</author><pubDate>Fri, 28 Sep 2018 18:42:44 +0800</pubDate><description><![CDATA[mysql client和server端之间的的数据根据不同的协议规则的进行组织发送。每包数据在发送的时候都要添加上协议头。

mysql源码采用5.7.10版本。

协议头：

           每个协议头共4个字节

          包数据长度:

              前三个字节表示数据部分的长度（不包括协议头），三字节能表示的最大长度是16M-1（2^24 - 1），如果要发...]]></description><category></category></item><item><title><![CDATA[oracle DDL锁超时问题]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/79128053</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/79128053</guid><author>spb3732</author><pubDate>Mon, 22 Jan 2018 13:55:04 +0800</pubDate><description><![CDATA[oracle数据库在执行truncate table的时候报错： ORA-00054：resource busy and acquire with NOWAIT specified or timeout expired





该问题原因是oracle在执行DDL操作时，DML操作已经对该对象加锁，由于DDL获取锁超时导致的。



模拟场景：

1.在session1中首先向一个表插入一...]]></description><category></category></item><item><title><![CDATA[ORA-25153: Temporary Tablespace is Empty 错误处理]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/79106156</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/79106156</guid><author>spb3732</author><pubDate>Fri, 19 Jan 2018 15:25:23 +0800</pubDate><description><![CDATA[一个生产环境现场报错：ORA-25153: Temporary Tablespace is Empty 

该现场前几天由其他同事重建过控制文件，怀疑是控制文件导致。处理步骤如下：

1. 首先查询临时文件是否存在：

   

  可以看到数据库确实没有指定数据文件。

 

 

2. 查询数据库正在运行控制文件内容： alter  database  backup controlfile t...]]></description><category></category></item><item><title><![CDATA[Optimize Table整理MySQL表空间]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/78969788</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/78969788</guid><author>spb3732</author><pubDate>Thu, 04 Jan 2018 13:06:45 +0800</pubDate><description><![CDATA[Optimize Table table_name 该命令会整理表的数据和索引的物理存储内容，可以减少磁盘空间、提高I/O的访问效率。该命令对不同存储引擎下的表作用不同。

Optimize Table适用场景：

   1. InnoDB表做了大量的insert、update、delete操作，并且每个表一个ibd文件（设置了innodb_file_per_table值为ON）。

  2.  ...]]></description><category></category></item><item><title><![CDATA[Mysql 复制介绍]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/78905744</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/78905744</guid><author>spb3732</author><pubDate>Tue, 26 Dec 2017 19:46:26 +0800</pubDate><description><![CDATA[MySQL 复制执行流程：

1. Master上语句执行解释之前，将更新数据库的操作记录在二进制日志中（select语句不记录）。

2.Master上有个转储线程，读取二进制日志文件的内容发送到slave机器的I/O线程上。

3.slave I/O线程接收数据写入中继日志。

4.salve的sql线程从中继日志读取并执行

 



 

如果主机和备机要穿越网络，为保证安全性，可以配置S...]]></description><category></category></item><item><title><![CDATA[MySQL数据库备份和恢复方案小结]]></title><link>https://blog.youkuaiyun.com/spb3732/article/details/78856986</link><guid>https://blog.youkuaiyun.com/spb3732/article/details/78856986</guid><author>spb3732</author><pubDate>Wed, 20 Dec 2017 20:08:11 +0800</pubDate><description><![CDATA[这两天在调研MySQL数据库的备份和恢复方案，备份对象是对大量Innodb表，或者加上少量的MyISAM表。

 

InnoDB备份常见问题：

文件一致性：数据文件、缓存、日志文件必须保持严格一致。加锁的方法没法保证一致性，因为InnoDB后台刷新数据是异步进行的。

数据一致性：不能一次锁住一张表，这个备份的是不同时刻的表数据；如果一次锁住所有表，innodb的mvcc机制会增加undo日志...]]></description><category></category></item></channel></rss>