寫在前面:
我們都知道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的數據進行復制的
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。