?先先了解mysql主從同步的原理
1. master提交完事務后究西,寫?binlog
2. slave連接到master卦碾,獲取binlog
3. master創(chuàng)建dump線程饺饭,推送binglog到slave
4. slave啟動?個IO線程讀取同步過來的master的binlog渤早,記錄到relay log中繼?志中
5. slave再開啟?個sql線程讀取relay log事件并在slave執(zhí)?湖雹,完成同步
6. slave記錄??的binglog
由于mysql默認的復制?式是異步的友雳,主庫把?志發(fā)送給從庫后不關?從庫是否已經處理域帐,這樣會產??個問題就是假設主庫掛了威创,從庫處理失敗了癣籽,這時候從庫升為主庫后元潘,?志就丟失了晕拆。由此產?兩個概念绘梦。
全同步復制
主庫寫?binlog后強制同步?志到從庫胸哥,所有的從庫都執(zhí)?完成后才返回給客戶端涯竟,但是很顯然這個?式的話性能會受到嚴重影響。
半同步復制
和全同步不同的是空厌,半同步復制的邏輯是這樣庐船,從庫寫??志成功后返回ACK確認給主庫,主庫收到?少?個從庫的確認就認為寫操作完成嘲更。
主從的延遲怎么解決呢筐钟?
1. 針對特定的業(yè)務場景,讀寫請求都強制?主庫
2. 讀請求?從庫赋朦,如果沒有數(shù)據篓冲,去主庫做?次查詢