MySQL主從復制原理深入解析與練習
MySQL主從復制原理深入解析與練習
MySQL主從復制畫圖描述:
MySQL主從復制原理上圖詳解:
① 用戶做crud操作,寫入數據庫,更新結果記錄到binlog中;
② 主從同步是主找從的,從庫IO發起請求,主庫的主進程看從庫的master change
③ 主庫根據master的位置點,從這個位置點的binlog日誌一直到binlog最後,將其準備發送給從庫;
④ 將找到的binlog日誌發給從庫,並且還會發送新的日誌點;
⑤ 從庫收到binlog日誌,將其寫入relay-log(中繼日誌)中;
⑥ 從庫IO進程再向master info保存主庫傳過來的最後的binlog日誌的位置點;
⑦ 從庫IO是循環發起請求的,發了再要,不會顧及SQL讀取中繼的操作。
從庫IO根據新的日誌點,向主庫發起請求,主庫執行3操作再,再發送新的binlog給從庫,從庫再執行5操作;
⑧ 其實當第一次向
⑨ SQL讀取中繼日誌,並不會一次性全部讀完,會把讀取到的日誌點存放到relay-log.info中。
主從同步實現之前應該具備的條件和做的準備:
① 從庫有IO和SQL兩個線程,主庫有IO一個線程
② 開啟主從同步之前,主從庫相對與一個日誌點之前的數據是一致的;
(即先要將主庫全備,並且記錄全備的binlog:show master status;然後將全備的內容放入從庫,即可完成)
③ 開啟主從同步之前,要在主庫建立從庫進行同步的賬號;
(3306mysql>grant replication slave on *.* to ‘rep’@’192.168.168.101’ identified by ‘123’;)
④ 主庫要打開binlog開關;
⑤ 從庫要與主庫進行主從同步,要做一下配置
(
3307mysql>CHANGE MASTER TO
MASTER_HOST=’192.168.168.101’,
MASTER_PORT=’3306’,
MASTER_USER=’rep’,
MASTER_PASSWORD=’123’,
MASTER_LOG_FILE=’mysql-bin.000002,’
MASTER_LOG_POS=’238’;
)
註:master_host參數裏面最好不要是域名或者localhost,最好是IP;對於最後兩個參數,如果主庫做全備的時候加了參數--master-data=1,最後兩條就不用指定了,如果沒有,主庫做全備之前之後要mysql>show master status;查看日誌點,並保證之前之後一致
⑥ 在從庫mysql>start slave;開啟從庫的IO和SQL進程,並且查看mysql>show slave status\G;查看(slave_IO_Running:yes slave_SQL_Rnning:yes scends_behind_master:0)如果這三個參數是這樣,基本上,主從復制配置完成。
本文出自 “qb的博客” 博客,謝絕轉載!
MySQL主從復制原理深入解析與練習