0%

前言

在MySQL的binlog中,一个事务一般由多个binlog events组成。在复制(或者崩溃恢复)等场景中,为了保证数据的一致性,需要根据当前已经存在binlog中的event来判断事务的完整性,以决定复制的位置(或者是否需要truncate不完整的事务)。MySQL 5.7开始,引入了类Transaction_boundary_parser来对一个完整事务做边界的判断。事务边界判断的源代码包含在sql/rpl_trx_boundary_parser.h(cc)两个文件中,以下内容是相关源码的分析。

阅读全文 »

开始

最近在做的事情,需要解析MySQL binlog中的previous_gtids,首先想到两种方法:

  1. google搜现成开源的解析代码;
  2. 移植MySQL内核中关于previous_gtid解析的代码;

探索

移植MySQL代码这个事情,本身工作量比较大,而且MySQL中关于GTID的类以及文件有好多,我只是需要一个解析previous_gtids_log_event的工具,没必要搞这么重,所以方法2是下下策。
然后很自然的去google搜索开源解析代码,本以为解析previous_gtids_log_event这种事情,网上应该有很多现成的代码可以拷贝,结果google不但没有找到,而且连previous_gtids_log_event的格式相关的说明都没有搜到(可能是我不会用google)。方法一行不通。

阅读全文 »

磁盘物理结构

主要包括:

  • 磁盘盘片:存储实际数据;
  • 主轴:转动盘片;
  • 读写磁头:读写盘片上的实际数据;
  • 转动手臂:伸展磁头,让磁头位于要读取数据的盘片位置;
  • 转动轴:负责转动手臂的伸展;
阅读全文 »

1.核心问题是什么?(只能有一个,如果有很多,找到最重要的那个)

2.这个问题的背景是什么?(来龙去脉,历史原因)

3.和现在这个问题有关的人物和因素有哪些?(记住MECE法则,用归纳法,一一列出来)

4.哪些是导致这个问题的关键原因?

5.哪些是次要原因?

6.解决这个问题有哪些方法?(用归纳法,写出所有可能。用演绎法,找到每种方法实施的具体步骤)

7.解决这个问题,你现在欠缺哪些条件或者资源?

8.如何去弥补这些条件上的欠缺?

9.你的时间规划是怎样的,先做什么,再做什么,然后做什么?

10.最后一步,just do it.

阅读全文 »