您好,登錄后才能下訂單哦!
1 支持發(fā)送binlog和接受ack的異步化
通過前面的介紹,我們知道Semisynchronous Replication模式下,app在主庫上提交一個事務(wù)/event,MySQL將每個事務(wù)寫入binary并且同步到到slave ,master會等待至少一個slave通知:slave 已經(jīng)接收到傳過來的events并寫入relay log,才返回給回話層 寫入成功,或者直到傳送日志發(fā)生超時,系統(tǒng)自動將為異步復(fù)制模式。
整體流程的邏輯圖
5.5 版本semi sync 設(shè)計的缺點:
從原理以及上圖來看,舊版本的semi sync 受限于dump thread ,原因是dump thread 承擔(dān)了兩份不同且又十分頻繁的任務(wù):傳送binlog 給slave ,還需要等待slave反饋信息,而且這兩個任務(wù)是串行的,dump thread 必須等待 slave 返回之后才會傳送下一個 events 事務(wù)。dump thread 已然成為整個半同步提高性能的瓶頸在高并發(fā)業(yè)務(wù)場景下,這樣的機制會影響數(shù)據(jù)庫整體的TPS .
為了解決上述問題,在5.7.4版本的semi sync 框架中,獨立出一個 ack collector thread ,專門用于接收slave 的反饋信息。這樣master 上有兩個進程獨立工作,可以同時發(fā)送binlog 到slave ,和接收slave的反饋。整體流程的邏輯圖
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。