mysql主从复制道理有哪些
mysql主从复制道理:第一主库发送更新事件到从库;然后从库读取更新记载,并施行更新记载;最后使得从库的内容与主库维持一致。
主库db的更新事件(update、insert、delete)被写到binlog
主库新建一个binlog dump thread,把binlog的内容发送到从库
从库启动并发起连贯,连贯到主库
从库启动之后,新建一个I/O线程,读取主库传过来的binlog内容并写入到relay log
从库启动之后,新建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开端施行读取到的更新事件,将更新内容写入到slave的db
注:上述流程为相对流程,并非绝对流程
MySQL主从复制的道理
MySQL主从复制是一个异步的复制历程,主库发送更新事件到从库,从库读取更新记载,并施行更新记载,使得从库的内容与主库维持一致。
binlog:binary log,主库中保留所有更新事件日志的二进制文件。binlog是数据库办事启动的一刻起,保留数据库所有变动记载(数据库构造和内容)的文件。在主库中,只有有更新事件涌现,就会被顺次地写入到binlog中,之后会推送到从库中作为从库进行复制的数据源。
binlog导出线程:每当有从库连贯到主库的时候,主库都会新建一个线程然后发送binlog内容到从库。 关于每一个马上发送给从库的sql事件,binlog导出线程会将其锁住。一旦该事件被线程读取完之后,该锁会被开释,即便在该事件完全发送到从库的时候,该锁也会被开释。
在从库中,当复制开端时,从库就会新建从库I/O线程和从库的SQL线程进行复制处置。
从库I/O线程:当START SLAVE语句在从库开端施行之后,从库新建一个I/O线程,该线程连贯到主库并要求主库发送binlog里面的更新记载到从库上。 从库I/O线程读取主库的binlog导出线程发送的更新并拷贝这些更新到当地文件,其中包含relay log文件。
从库的SQL线程:从库新建一个SQL线程,这个线程读取从库I/O线程写到relay log的更新事件并施行。
综上所述,可知:
关于每一个主从复制的连贯,都有三个线程。具有多个从库的主库为每一个连贯到主库的从库新建一个binlog导出线程,每一个从库都有它本人的I/O线程和SQL线程。
从库通过新建两个独立的线程,使得在进行复制时,从库的读和写进行了别离。因而,即便负责施行的线程运转较慢,负责读取更新语句的线程并不会因而变得迟缓。比方说,要是从库有一段工夫没运转了,当它在此启动的时候,只管它的SQL线程施行比拼慢,它的I/O线程可以迅速地从主库里读取所有的binlog内容。这样一来,即便从库在SQL线程施行完所有读取到的语句前休止运转了,I/O线程也至少完全读取了所有的内容,并将其平安地备份在从库当地的relay log,随时预备在从库下一次启动的时候施行语句。
以上就是mysql主从复制道理有哪些的细致内容,更多请关注 百分百源码网 其它相干文章!