导读:
高鹏(网名八怪),《深入理解MySQL主从原理32讲》系列文的作者。本系列通过GTID部分、Event部分、主库部分、从库部分四大块来详细讲解主从原理
点击下图可订阅
《深入理解MySQL主从原理32讲》作者八怪(高鹏),现任易极付高级DBA 从事Oracle/MySQL相关工作10余年,Oracle OCM,有丰富的数据库性能调优,故障诊断经验。现全部32节系列文章已全部更新完毕,本文补充了该系列的详细目录,并在知数堂进行首发。借此也对本次系列专栏做一次总结。
欢迎大家继续与我进行交流,讨论。技术无边界,学习无止境。
一、目录详情
第1节:GTID的基本概念
- 1.5 GTID_LOG_EVENT和PREVIOUS_GTIDS_LOG_EVENT简介
第2节:mysql.gtid_executed表/gtid_executed变量/gtid_purged变量的更改时机
- 2.1 mysql.gtid_executed表/gtid_executed变量/gtid_purged变量的作用
第3节:GTID模块初始化简介和参数binlog_gtid_simple_recovery
第4节:GTID中的运维
- 4.3 搭建GTID AUTO_POSITION MODE模式的主从
-
4.9 ONGOING_ANONYMOUS_TRANSACTION_COUNT统计值的变更时机
- 4.10 设置MASTER_AUTO_POSITION = 1的影响
- 4.11 offline开启GTID丢失数据的测试
第5节:Binary log Event 的总体格式
- 5.3 Event header和Event footer
- 5.5 本系列将介绍Event的type code
第6节:⎡重点⎦Event FORMAT_DESCRIPTION_EVENT/PREVIOUS_GTIDS_LOG_EVENT
- 6.1 FORMAT_DESCRIPTION_EVENT
6.1.1 FORMAT_DESCRIPTION_EVENT的作用
6.1.2 源码重要接口
6.1.3 主体格式
6.1.4 实例解析
6.1.5 生成时机 - 6.2 PREVIOUS_GTIDS_LOG_EVENT
6.2.1 PREVIOUS_GTIDS_LOG_EVENT的作用
6.2.2 源码重要接口
6.2.3 主体格式
6.2.4 实例解析
6.2.5 生成时机
第7节:⎡重点⎦Event GTID_LOG_EVENT
- 7.1 GTID_LOG_EVENT
7.1.1 GTID_LOG_EVENT的作用
7.1.2 源码重要接口
7.1.3 主体格式
7.1.4 简单解析
7.1.5 生成时机
7.1.6 ANONYMOUS_GTID_LOG_EVENT
7.1.7 GTID 三种模式
第8节:⎡重点⎦Event QUERY_EVENT/MAP_EVENT
- 8.1 QUERY_EVENT
8.1.1 QUERY_EVENT的作用
8.1.2 源码重要接口
8.1.3 主体格式
8.1.4 实例解析
8.1.5 生成时机 - 8.2 MAP_EVENT
8.2.1 MAP_EVENT的作用
8.2.2 源码重要接口
8.2.3 主体格式
8.2.4 实例解析
8.2.5 生成时机
第9节:⎡重点⎦Event WRITE_ROWS_EVENT/DELETE_ROWS_EVENT
- 9.1 WRITE_ROWS_EVENT
9.1.1 WRITE_ROWS_EVENT 的作用
9.1.2 源码重要接口
9.1.3 主体格式
9.1.4 实例解析
9.1.5 生成时机
9.1.6 修改数据不止一行的情况
9.1.7 写入binlog cache时机 - 9.2 DELETE_ROWS_EVENT
9.2.1 DELETE_ROWS_EVENT 的作用
9.2.2 源码重要接口
9.2.3 主体格式
9.2.4 实例解析
第10节:⎡重点⎦Event UPDATE_ROWS_EVENT/XID_EVENT
- 10.1 UPDATE_ROWS_EVENT
10.1.1 UPDATE_ROWS_EVENT 的作用
10.1.2 源码重要接口
10.1.3 主体格式
10.1.4 实例解析 - 10.2 XID_EVENT
10.2.1 XID的作用
10.2.2 XID_EVENT的作用
10.2.3 源码重要接口
10.2.4 主体格式
10.2.5 实例解析
10.2.6 生成时机
第11节:参数binlog_row_image的影响
- 12.3 分析binary log中Event的生成速度
- 13.3 binlog_cache_size作用及其初始化
- 13.4 binlog cache临时文件的分配和使用
- 13.5 参数max_binlog_cache_size的作用
- 13.6 如何观察到binlog cache临时文件的存在
- 16.5 Writeset设置对last commit的处理方式
- 16.7 Writeset的并行复制对last commit的处理流程
- 16.9 关于binlog_transaction_dependency_history_size参数说明
- 16.11 为什么同一个session执行的事务也能生成同样的last commit
- 17.1 POSITION MODE模式和GTID AUTO_POSITION MODE模式的不同
17.1.1 POSITION模式
17.1.2 AUTO_POSITION模式
第18节:DUMP线程查找和过滤GTID的基本算法
- 18.2 检查从库的GTID是否大于主库的GTID
- 18.3 根据GTID检查从库需要的binary log是否已经被清理
- 18.4 实际扫描主库的binary log,检查从库需要的binary log是否已经被清理
- 18.5 进行GTID的过滤,决定发送哪些事务给从库
第21节:MTS中GAP测试和参数slave_preserve_commit_order
- 21.2 参数slave_preserve_commit_order的影响
第23节:从库的SQL线程(MTS协调线程)和参数sql_slave_skip_counter
- 23.3 各个Event大概做了什么
23.3.1 GTID_EVENT
23.3.2 QUERY_EVENT
23.3.3 MAP_EVENT
23.3.4 DELETE_EVENT
23.3.5 XID_EVENT
第24节:从库数据的查找和参数slave_rows_search_algorithms
- 24.1 从一个例子出发
24.1.1 从库普通索引的扫描方式
24.1.2 从库主键唯一键的扫描方式
24.1.3 从库没有索引的扫描方式 - 24.3 ROW_LOOKUP_HASH_SCAN方式的数据查找
- 24.4 slave_rows_search_algorithms参数总结
- 26.2 单SQL线程
26.2.1 POSITION MODE模式
26.2.2 GTID AUTO_POSITION MODE模式 - 26.3 MTS
26.3.1 POSITION MODE模式
26.3.2 GTID AUTO_POSITION MODE模式
第27节:从库Seconds_Behind_Master的计算方式
- 27.1 Seconds_Behind_Master计算的方式
- 27.2 影响Seconds_Behind_Master计算的因素
- 27.3 Seconds_Behind_Master计算方式总结
- 27.4 MTS中Seconds_Behind_Master计算误差的测试
- 27.5 手动修改从库系统时间,导致Seconds_Behind_Master为0
第28节:从库Seconds_Behind_Master延迟总结
- 28.1 延迟情况总结
28.1.1 第一类
28.1.2 第二类 - 28.2 相关测试
28.2.1 Innodb层的行锁造成的延迟
28.2.2 MySQL层的MDL LOCK造成的延迟
- 29.2 PID、LWP ID、Thread TID
- 29.3 如何将MySQL的线程和LWP ID进行对应
- 30.3 MySQL的处理死锁机制
30.3.1 死锁检测
30.3.2 如何处理死锁
第31节:Innodb Buffer Pool的三种Page和链表
- 31.1 Innodb Buffer Pool 简介
- 31.2 三种Page
31.2.1 Free Page
31.2.2 Clean Page
31.2.3 Dirty Page - 31.3 三种链表
31.3.1 LRU 链表
31.3.2 Flush 链表
31.3.3 Free 链表
第32节:利用performance_schema获取造成死锁的语句
以下为节选的6篇文章,想了解更多的内容可以订阅《深入理解MySQL主从原理32讲》专栏
写在最后,再次感谢翟卫祥、叶金荣、吴炳锡、李真旭、杨奇龙百忙之中为本系列作推荐序,特别感谢叶金荣为本系列校稿。
识别下方二维码添加作者为好友
END
点击下图小程序订阅
《深入理解MySQL主从原理32讲》专栏
可了解更多八怪技术文章
扫码加入MySQL技术Q群
(群号:793818397)