pika全同步

2018-09-27 09:55 更新

背景

1.Pika Replicate

  • pika支持master/slave的復(fù)制方式,通過(guò)slave端的slaveof命令激發(fā)
  • salve端處理slaveof命令,將當(dāng)前狀態(tài)變?yōu)閟lave,改變連接狀態(tài)
  • slave的trysync線程向master發(fā)起trysync,同時(shí)將要同步點(diǎn)傳給master
  • master處理trysync命令,發(fā)起對(duì)slave的同步過(guò)程,從同步點(diǎn)開(kāi)始順序發(fā)送binlog或進(jìn)行全同步

2.Binlog

  • pika同步依賴binlog
  • binlog文件會(huì)自動(dòng)或手動(dòng)刪除
  • 當(dāng)同步點(diǎn)對(duì)應(yīng)的binlog文件不存在時(shí),需要通過(guò)全同步進(jìn)行數(shù)據(jù)同步

全同步

1. 簡(jiǎn)介

  • 需要進(jìn)行全同步時(shí),master會(huì)將db文件dump后發(fā)送給slave
  • 通過(guò)rsync的deamon模式實(shí)現(xiàn)db文件的傳輸

2. 實(shí)現(xiàn)邏輯

  1. slave在trysnc前啟動(dòng)rsync進(jìn)程啟動(dòng)rsync服務(wù)
  2. master發(fā)現(xiàn)需要全同步時(shí),判斷是否有備份文件可用,如果沒(méi)有先dump一份
  3. master通過(guò)rsync向slave發(fā)送dump出的文件
  4. slave用收到的文件替換自己的db
  5. slave用最新的偏移量再次發(fā)起trysnc
  6. 完成同步 

pika全同步

pika全同步

3. Slave連接狀態(tài)

  • No Connect:不嘗試成為任何其他節(jié)點(diǎn)的slave
  • Connect:Slaveof后嘗試成為某個(gè)節(jié)點(diǎn)的slave,發(fā)送trysnc命令和同步點(diǎn)
  • Connecting:收到master回復(fù)可以slaveof,嘗試跟master建立心跳
  • Connected: 心跳建立成功
  • WaitSync:不斷檢測(cè)是否DBSync完成,完成后更新DB并發(fā)起新的slaveof 

pika全同步

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)