如何理解Redis主從復(fù)制的全量和增量同步,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
全量同步:
1.slave服務(wù)器連接到master服務(wù)器,發(fā)送SYNC命令
slave服務(wù)器通過 syncWithMaster() 函數(shù)來連接 Master 服務(wù)器(如果Master服務(wù)器需要密碼登錄的話,先登錄),并且發(fā)送SYNC命令請求同步,接著打開 rdb 文件(用于存儲由Master發(fā)送過來的數(shù)據(jù)),創(chuàng)建讀rdb 的 IO 事件(readSyncBulkPayload)
2.master服務(wù)器備份數(shù)據(jù)庫到 .rdb 文件
當(dāng)slave服務(wù)器發(fā)送SYNC命令到master服務(wù)器時,master 服務(wù)器變回調(diào)用 syncCommand() 函數(shù)來進行同步,同步的第一步便是把數(shù)據(jù)庫的數(shù)據(jù)存儲為 rdb 文件,存儲完畢后調(diào)用updateSalvesWaitingBgsave()函數(shù)來發(fā)送 rdb 文件給所有的slave 服務(wù)器,updateSlavesWaitingBgsave() 要做的事情是, 打開 rdb 文件, 創(chuàng)建發(fā)送 rdb 文件 IO 事件(sendBulkToSlave). 而sendBulkToSlave()主要的工作就是把rdb文件發(fā)送給 Slave 服務(wù)器。而當(dāng) Slave 服務(wù)器接收 rdb 文件完畢之后(readSyncBulkPayload()函數(shù)處理), 會清空原來數(shù)據(jù)庫的數(shù)據(jù),然后把 rdb 文件的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中
3.全量同步完成
完成上面的步驟,全量同步基本完成。
增量同步:
增量同步就是當(dāng) master 服務(wù)器有數(shù)據(jù)更新的時候,會立刻同步到所有的 slave 服務(wù)器
1.當(dāng)我們在 master 服務(wù)器增減數(shù)據(jù)的時候,就會觸發(fā) replicationFeedSalves()函數(shù),接下來在 Master 服務(wù)器上調(diào)用的每一個命令都會使用replicationFeedSlaves() 函數(shù)來同步到Slave服務(wù)器。當(dāng)然,在執(zhí)行此函數(shù)之前master 服務(wù)器會判斷用戶執(zhí)行的命令是否有數(shù)據(jù)更新,如果有數(shù)據(jù)更新并且slave 服務(wù)器不為空,才會執(zhí)行此函數(shù),而此函數(shù)主要的工作就是把用戶執(zhí)行的命令發(fā)送到所有的 slave服務(wù)器,讓 slave 服務(wù)器執(zhí)行,這樣就可以實施同步功能了。
關(guān)于如何理解Redis主從復(fù)制的全量和增量同步問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。
當(dāng)前文章:如何理解Redis主從復(fù)制的全量和增量同步-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://aaarwkj.com/article46/pjohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、建站公司、動態(tài)網(wǎng)站、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容