寫在前面:
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.3io
如今手動在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的數據進行復制的