版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
我们知道,mysqld是一个多线程的C/S架构的网络应用,因此少不了通过网络来读写数據所以可能会出现写数据失败的情况。如果mysql的错误日志中出现此类错误就说明是mysqld在向客户端发送网络包时失败导致的,当然引申到複制场景,则说明是复制过程中master向slave推送binlog时,写网络数据包失败
下面来演示一把,主从复制过程中从机暂停读取网络包导致tcp拥塞的情况
利用gdb断点到从机的read_event函数,此时从机读取网络包将会暂停
主库不停的操作同时观察tcp链接情况
需要确定master在send binlog失败的凊况下退出dump thread的逻辑,根据错误日志提示进入到相关的代码查看。
错误代码在如下位置
解释到这里大概就清楚了吧。