mysql主存原理_深入理解MySQL主从原理(32讲)重点及目录

本文是我的系列 深入理解MySQL主从原理(32讲) 中的重点及目录情况。欢迎大家订阅如下:

![image.png](https://upload-images.jianshu.io/upload_images/7398834-0ffa3bdc078cddf4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

如果图片不能显示可查看下面链接:

https://www.jianshu.com/p/d636215d767f

>第1节:GTID的基本概念

- 1.1 GTID的作用

- 1.2 GTID的基本表示

- 1.3 server\_uuid的生成

- 1.4 GTID的生成

- 1.5 GTID\_LOG\_EVENT和PREVIOUS\_GTIDS\_LOG\_EVENT简介

- 1.6 gtid\_executed表的作用

>第2节:mysql.gtid_executed表/gtid_executed变量/gtid_purged变量的更改时机

- 2.1 mysql.gtid_executed表/gtid_executed变量/gtid_purged变量的作用

- 2.2 修改时机图解

- 2.3 主库修改时机

- 2.4 从库修改时机

- 2.5 通用修改时机

- 2.6 通用更改时机源码函数简析

>第3节:GTID模块初始化简介和参数binlog_gtid_simple_recovery

- 3.1 简化的初始化流程图

- 3.2 步骤解析

>第4节:GTID中的运维

- 4.1 如何跳过一个事务

- 4.2 mysqldump导出行为的改变

- 4.3 搭建GTID AUTO_POSITION MODE模式的主从

- 4.4 主从切换

- 4.5 gitd_mode参数的含义

- 4.6.online开启GTID

- 4.7 offline开启GTID

- 4.8 开启GTID的注意事项

- 4.9 ONGOING_ANONYMOUS_TRANSACTION_COUNT统计值的变更时机

- 4.10 设置MASTER_AUTO_POSITION = 1的影响

- 4.11 offline开启GTID丢失数据的测试

>第5节:Binary log Event 的总体格式

- 5.1 binary log综述

- 5.2 Event的总体格式

- 5.3 Event header和Event footer

- 5.4 具体解析

- 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的影响

- 11.1 参数影响

- 11.2 过滤方式

- 11.3 DML Event中的标识

>第12节:巧用Event发现问题

- 12.1 分析长期未提交的事务

- 12.2 分析大事务

- 12.3 分析binary log中Event的生成速度

- 12.4 分析每个表生成了多少DML Event

- 12.5 工具展示

>第13节:binlog cache简介

- 13.1 binlog cache总体图解

- 13.2 使用binlog cache的大概流程

- 13.3 binlog_cache_size作用及其初始化

- 13.4 binlog cache临时文件的分配和使用

- 13.5 参数max_binlog_cache_size的作用

- 13.6 如何观察到binlog cache临时文件的存在

>第14节:事务Event的生成和写入流程

- 14.1 整体流程图解

- 14.2 删除阶段

- 14.3 提交阶段

>第15节:MySQL层事务提交流程简析

- 15.1 参数设置和说明

- 15.2 总体流程图

- 15.3 步骤解析第一阶段

- 15.4 步骤解析第二阶段

- 15.5 步骤解析第三阶段

- 15.6 步骤解析第三阶段

- 15.7 步骤解析第五阶段

- 15.8 总结

>第16节:基于WRITESET的并行复制方式

- 16.1 奇怪的last commit

- 16.2 Writeset是什么

- 16.3 Writeset的生成

- 16.4 函数add_pke的大概流程

- 16.5 Writeset设置对last commit的处理方式

- 16.6 Writeset的历史MAP

- 16.7 Writeset的并行复制对last commit的处理流程

- 16.8 WRITESET_SESSION的方式

- 16.9 关于binlog_transaction_dependency_history_size参数说明

- 16.10 没有主键的情况

- 16.11 为什么同一个session执行的事务也能生成同样的last commit

>第17节:主库的DUMP线程

- 17.1 POSITION MODE模式和GTID AUTO_POSITION MODE模式的不同

17.1.1 POSITION模式

17.1.2 AUTO_POSITION模式

- 17.2 流程图

- 17.3 步骤解析

- 17.4 总结

>第18节:DUMP线程查找和过滤GTID的基本算法

- 18.1 环境假设

- 18.2 检查从库的GTID是否大于主库的GTID

- 18.3 根据GTID检查从库需要的binary log是否已经被清理

- 18.4 实际扫描主库的binary log,检查从库需要的binary log是否已经被清理

- 18.5 进行GTID的过滤,决定发送哪些事务给从库

>第19节:从库MTS多线程并行回放(一)

- 19.1 综述

- 19.2 协调线程的分发机制图解

- 19.3 步骤解析

- 19.4 并行回放判定的列子

>第20节:从库MTS多线程并行回放(二)

- 20.1 工作线程执行Event

- 20.2 MTS中检查点中的重要概念

- 20.3 MTS中的检查点的流程图解

- 20.4 总结

>第21节:MTS中GAP测试和参数slave_preserve_commit_order

- 21.1 MTS中GAP测试

- 21.2 参数slave_preserve_commit_order的影响

>第22节:从库的IO线程

- 22.1 IO线程的启动流程图

- 22.2 流程解析

>第23节:从库的SQL线程(MTS协调线程)和参数sql_slave_skip_counter

- 23.1 流程图

- 23.2 重要步骤说明

- 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.2 确认查找数据的方式(图解)

- 24.3 ROW_LOOKUP_HASH_SCAN方式的数据查找

- 24.4 slave_rows_search_algorithms参数总结

>第25节:从库的关闭和恢复流程

- 25.1 正常的STOP SLAVE流程

- 25.2 STOP SLAVE为什么会慢

- 25.3 从库启动需要读取的信息

- 25.4 关于repository表的事务性

- 25.5 相关参数

- 25.6 恢复流程图解

>第26节:合理的从库设置

- 26.1 合理设置图解

- 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模式

- 26.4 一个非安全设置导致问题的列子

- 26.5 总结

>第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造成的延迟

- 28.3 总结

>第29节:线程简介和MySQL调试环境搭建

- 29.1 线程简介

- 29.2 PID、LWP ID、Thread TID

- 29.3 如何将MySQL的线程和LWP ID进行对应

- 29.4 调试环境搭建

- 29.5 使用调试环境证明问题的一个列子

>第30节:死锁漫谈

本节由杨奇龙编写

- 30.1 前言

- 30.2 死锁

- 30.3 MySQL的处理死锁机制

30.3.1 死锁检测

30.3.2 如何处理死锁

- 30.4 Innodb 的锁类型

- 30.5 锁信息解析

- 30.6 Innodb 不同事务加锁类型

- 30.7 如何查看死锁

- 30.8 如何尽可能避免死锁

>第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 链表

- 31.4 LRU 链表和Flush链表的区别

- 31.5 触发刷脏页的条件

- 31.6 总结

>第32节:利用performance_schema获取造成死锁的语句

本节由田兴椿编写

- 32.1 开启相关统计的方法

- 32.2 根据死锁信息来获取造成死锁的语句

- 32.3 总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值