緣由在這!爲何執行stop slave,再start slave後,能夠繼續主從複製關係?

寫在前面:
mysql

咱們都知道Master寫滿了一個binlog,或者在Master手動執行了flush logs,SLave不須要作任何操做就能夠繼續從Master接受數據進行同步,不知道小夥伴們有沒有考慮過,這是爲何?sql


緣由就是:ide

其實執行stop slave,就是分別關閉了I/O線程(stop slave IO_THREAD)和SQL線程(stop slave SQL_THREAD),I/O線程會維護master.info信息的更新,SQL線程會維護relay-log.info信息的更新,在執行start slave時候,會依照master.info和relay-log.info信息,繼續執行I/O線程和SQL線程,因此複製就能夠進行下去了spa


下面演示一下:線程

在Master主機上執行:
日誌

mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000008
         Position: 120
同步


在Slave主機上執行it

cat /home/data/mysql3306/master.info
mysql-bin.000008
120

192.168.32.3
io


如今手動在Master滾動一次binlog日誌ast

mysql> flush logs;

mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000009
         Position: 120


在Slave主機上執行

cat /home/data/mysql3306/master.info
23
mysql-bin.000009
120

192.168.32.3


能夠看到,Slave主機正是根據master.info文件,來對Master的數據進行復制的

相關文章
相關標籤/搜索