主從復(fù)制數(shù)據(jù)條件:
Redis數(shù)據(jù)快照:
可以通過配置文件來調(diào)整:
Save 900 1
Save 300 10
Save 60 10000
以上在redis.conf 中的配置指出多長時(shí)間內(nèi),有多少次更新操作就將數(shù)據(jù)同步到數(shù)據(jù)文件
中,可以多個(gè)條件進(jìn)行配合這個(gè)合,上面的含義是900秒后有一次Key發(fā)生改變就執(zhí)行
save,300秒有10發(fā)生改變就執(zhí)行save 60秒有10000key發(fā)生改變就執(zhí)行save
數(shù)據(jù)快照的缺點(diǎn):是快照持久化可能導(dǎo)致數(shù)據(jù)丟失,比如在這個(gè)時(shí)間范圍內(nèi)機(jī)器故障就會(huì)導(dǎo)
致數(shù)據(jù)丟失
但是還有一種持久化方式:aof方式。這種就是可以立馬保存到磁盤上。要實(shí)現(xiàn)這種方式只
需要Appendonly 改成yes就是aof方式。默認(rèn)是快照方式no
Appendfsync No/always/everysec
no:標(biāo)示系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤,性能最好,數(shù)據(jù)容易丟失
always:標(biāo)示每次更新操作后手動(dòng)調(diào)用fsync()將數(shù)據(jù)保存磁盤,每次收到命令就立刻寫到磁
盤,最慢
everysec:標(biāo)示每秒同步一次,每秒鐘強(qiáng)制寫入磁盤一次,在性能和持久化方面做了很好的
折中
為了定時(shí)減小AOF文件的大小,自動(dòng)在負(fù)載低的時(shí)候bgrewriteaof
Master關(guān)閉Save.讓從服務(wù)器來實(shí)現(xiàn)持久化,這樣master就達(dá)到最好,因?yàn)閙aster 只負(fù)責(zé)寫
。
主從復(fù)制過程:
第一次Slave 向Master發(fā)出同步請(qǐng)求,Master先將dump出rdb文件,然后將rdb文件傳輸給
slave,然后Master吧緩存命令轉(zhuǎn)給Slave。初步同步完成,第二次以及以后的同步實(shí)現(xiàn),
Master將變量的快照直接實(shí)現(xiàn)一次發(fā)給各個(gè)Slave.不管什么原因?qū)е耂lave和Master斷開重
新連接都會(huì)重復(fù)以上過程,Redis的主從復(fù)制是建立在內(nèi)存快照的持久化基礎(chǔ)上的,只要有
Slave就一定會(huì)有內(nèi)存快照的發(fā)送,雖然Redis宣稱主從復(fù)制無阻塞,但是由于Redis使用單
線程服務(wù),如果Master快照文件比較大,那么第一次全量傳輸會(huì)消耗時(shí)間,且文件傳輸過程
中Master可能無法提供服務(wù),也就是服務(wù)會(huì)中斷。
Redis數(shù)據(jù)恢復(fù):
當(dāng)Redis服務(wù)剛掉以后,重啟時(shí)將按一下優(yōu)先級(jí)恢復(fù)內(nèi)存數(shù)據(jù):
1如果配置了AOF,重啟以后加載AOF文件數(shù)據(jù)
2:如果同時(shí)配置RBD和AOF。重啟以后只加載AOF
3:如果配置RDB,重啟以后加載dump文件恢復(fù)數(shù)據(jù)
聯(lián)系客服