深入理解MySQL主从复制线程状态转变
前言
MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是
一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到日志流后,写入relaylog,另一个线
程SQL线程,会读取该relaylog内容,然后对sql语句进行重放.
本文主要给大家介绍的是关于MySQL主从复制线程状态转变的相关内容,下面话不多说了,来一起看看详细的介绍吧
一、主库线程状态(State)值
以下列表显示了主从复制中主服务器的BinlogDump线程的State列中可能看到的最常见状态(SHOWPROCESSLIST)。如果BinlogDump线程在主服务器上看不到,这意味着复制没有运行,也就是说,目前没有连接任何Slave主机。
Sendingbinlogeventtoslave
二进制日志由各种事件组成,一个事件通常为一个更新加一些其它信息。线程已经从二进制日志读取了一个事件并且正将它发送到从服务器。
Finishedreadingonebinlog;switchingtonextbinlog
线程已经读完二进制日志文件并且正打开下一个要发送到从服务器的日志文件。
Hassentallbinlogtoslave;waitingforbinlogtobeupdated
线程已经从二进制日志读取所有主要的更新并已经发送到了从服务器。线程现在正空闲,等待由主服务器上新的更新导致的出现在二进制日志中的新事件。
Waitingtofinalizetermination
线程停止时发生的一个很简单的状态。
二、从库I/O线程状态(State)值
Connectingtomaster
线程正试图连接主服务器。
Checkingmasterversion
建立同主服务器之间的连接后立即临时出现的状态。
Registeringslaveonmaster
建立同主服务器之间的连接后立即临时出现的状态。
Requestingbinlogdump
建立同主服务器之间的连接后立即临时出现的状态。线程向主服务器发送一条请求,索取从请求的二进制日志文件名和位置开始的二进制日志的内容。
Waitingtoreconnectafterafailedbinlogdumprequest
如果二进制日志转储请求失败(由于没有连接),线程进入睡眠状态,然后定期尝试重新连接。可以使用–master-connect-retry选项指定重试之间的间隔。
Reconnectingafterafailedbinlogdumprequest
线程正尝试重新连接主服务器。
Waitingformastertosendevent
线程已经连接上主服务器,正等待二进制日志事件到达。如果主服务器正空闲,会持续较长的时间。如果等待持续slave_read_timeout秒,则发生超时。此时,线程认为连接被中断并企图重新连接。
Queueingmastereventtotherelaylog
线程已经读取一个事件,正将它复制到中继日志供SQL线程来处理。
Waitingtoreconnectafterafailedmastereventread
读取时(由于没有连接)出现错误,线程企图重新连接前将睡眠master-connect-retry秒。
Reconnectingafterafailedmastereventread
线程正尝试重新连接主服务器,当连接重新建立后,状态变为Waitingformastertosendevent。
WaitingfortheslaveSQLthreadtofreeenoughrelaylogspace
正使用一个非零relay_log_space_limit值,中继日志已经增长到其组合大小超过该值。I/O线程正等待直到SQL线程处理中继日志内容并删除部分中继日志文件来释放足够的空间。
Waitingforslavemutexonexit
线程停止时发生的一个很简单的状态。
三、从库SQL线程状态(State)值
Readingeventfromtherelaylog
线程已经从中继日志读取一个事件,可以对事件进行处理了。
Hasreadallrelaylog;waitingfortheslaveI/Othreadtoupdateit
线程已经处理了中继日志文件中的所有事件,现在正等待I/O线程将新事件写入中继日志。
Waitingforslavemutexonexit
线程停止时发生的一个很简单的状态。
四、从库连接线程状态(State)值
这些线程状态发生在复制从库上,但与连接线程相关联,而不与I/O或SQL线程相关联。
Changingmaster
线程正在处理CHANGEMASTERTO语句。
Killingslave
线程正在处理STOPSLAVE语句。
Openingmasterdumptable
此状态发生在Creatingtablefrommasterdump之后。
Readingmasterdumptabledata
此状态发生在Openingmasterdumptable之后。
Rebuildingtheindexonmasterdumptable
此状态发生在Readingmasterdumptabledata之后。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。