免費網(wǎng)站開發(fā)河南鄭州最新消息
一、復制SYNC與PSYNC
在Redis主從架構中,主要有以下兩種情形需要進行數(shù)據(jù)同步
(1)當新的服務器執(zhí)行slave of 命令,成為主服務器的從服務器。這時候從服務器會向主服務器發(fā)送SYNC命令,請求全量同步數(shù)據(jù),主服務器會進行以下操作
-
執(zhí)行BGSAVE命令,在后臺生成一個RDB文件,并使用一個緩沖區(qū)記錄從現(xiàn)在開始執(zhí)行的所有寫命令
-
主服務器將BGSAVE命令生成RDB文件發(fā)送給從服務器,從服務器接收并載入這個RDB文件
-
主服務器將記錄在緩沖區(qū)里面的所有寫命令發(fā)送給從服務器。從服務器執(zhí)行這些寫命令
(2)當從服務器與主服務器斷開連接一段時間后恢復,從服務器需要部分同步從斷開連接到重新連接期間主服務器寫入的數(shù)據(jù),這時候從服務器會向主服務器發(fā)送PSYNC命令
部分重同步功能由以下三個部分構成 -
主服務器的復制偏移量和從服務器的復制偏移量
-
主服務器的復制積壓緩沖區(qū)
-
服務器的運行ID
當從服務器斷線重連,會比較自身的復制偏移量和主服務器的復制偏移量,并從復制積壓緩沖區(qū)取出gap數(shù)據(jù),同步給從服務器