原因在這!爲什麼執行stop slave,再start slave後,可以繼續主從複製關係?

寫在前面:

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


原因就是:

其實執行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線程,所以複製就可以進行下去了


下面演示一下:

在Master主機上執行:

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


在Slave主機上執行

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

192.168.32.3


現在手動在Master滾動一次binlog日誌

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的數據進行復制的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章