百无聊赖的我萌发了了解mysql数据库主从原理。接下来介绍的是我了解mysql主从原理的过程,作为分享的同时也作为备忘录使用,可能会比较啰嗦,请多担待。
一:环境准备
1.环境版本
Xcode Version 12.4 (12D4e)
Mysql 5.6.47
2.编译源码
基于Xcode编译mysql源码,这部分内容之前文章有记录
https://blog.csdn.net/qq_18913471/article/details/113741137
3.搭建主从环境
Xcode运行mysql作为另外一台实验机器的从库,过程就不描述了,大家自行百度
二:断点调试
1.了解mysql的io线程入口函数以及函数主要逻辑,之前已经整理了这部分内容,就不多加描述了
https://editor.csdn.net/md/?articleId=114916718
2.设置断点
了解了mysql的handle_slave_io入口函数之后,不难发现mysql是通过safe_connect函数建立与master的通信的,进入到safe_connect函数后发现实际发起连接请求的是connect_to_master函数,到此确定在connect_to_master上设置断点
3.启动从库io_thread线程
通过客户端连接xcode运行后的mysql服务,执行启动io_thread线程命令
start slave io_thread;
三:堆栈信息的梳理
1.启动slave io_thread线程后Xcode显示了mysql在启动io_thread线程的堆栈信息,以下是整体的堆栈信息截图,较多
2.堆栈信息主体信息剥离,为了清楚的认识mysql io_thread线程的启动过程,通过流程图的方式对启动过程中堆栈信息进行剥离,这样梳理的过程会直观一些
像极了贪吃蛇,哈哈哈