redis複製

Redis支持複製的功能,以實現當一臺服務器的數據更新後,自動將新的數據同步到
redis

其它數據庫。數據庫

Redis複製實現中,把數據庫分爲主數據庫master和從數據庫slave,主數據庫能夠緩存

進行讀寫操做,從數據庫通常是隻讀的,當主數據庫數據變化的時候,會自動同步給從數服務器

據庫。less

一,複製帶來的好處工具

1:能夠實現讀寫分離性能

2:利於在主數據庫崩潰時的數據恢復ip

二, 複製的配置同步

主數據庫不作配置;從數據庫須要在配置中設置slaveof 主數據庫ip 主數據庫端口。it

三,複製的基本操做命令

1:info replication :能夠查看複製節點的相關信息

2:slaveof:可在運行期間修改slave節點的信息,若是該數據庫已是某個主數據庫的從數

據庫,那麼會中止和原主數據庫的同步關係,轉而和新的主數據庫同步

3:slaveof no one:使當前數據庫中止與其餘數據庫的同步,轉成主數據庫

四,複製的基本原理

1:slave啓動時,會向master發送sync命令,2.8版後發送psync,以實現增量複製

2:主數據庫接到sync請求後,會在後臺保存快照,也就是實現RDB持久化,並將保

存快照期間接收到的命令緩存起來

3:快照完成後,主數據庫會將快照文件和全部緩存的命令發送給從數據庫

4:從數據庫接收後,會載入快照文件並執行緩存的命令,從而完成複製的初始化

5:在數據庫使用階段,主數據庫會自動把每次收到的寫命令同步到從服務器

五,樂觀複製策略

Redis採用樂觀複製的策略,容忍在必定時間內主從數據庫的內容不一樣,當

然最終的數據會是同樣的。這個策略保證了性能,在複製的時候,主數據庫並不

阻塞,照樣處理客戶端的請求。

Redis提供了配置來限制只有當數據庫至少同步給指定數量的從數據庫時,

主數據庫纔可寫,不然返回錯誤。配置是:min-slaves-to-write、min-slavesmax-lag

六,無硬盤複製

當複製發生時,主數據庫會在後臺保存RDB快照,即便你關閉了RDB,它也會這麼作,這樣就會導

致:

1:若是主數據庫關閉了RDB,如今強行生成了RDB,那麼下次主數據庫啓動的時候,可能會從RDB來恢復數

據,這多是舊的數據。

2:因爲要生成RDB文件,若是硬盤性能不高的時候,會對性能形成必定影響

所以從2.8.18版本,引入了無硬盤複製選項:repl-diskless-sync

七,哨兵(sentinel)

Redis提供了哨兵工具來實現監控Redis系統的運行狀況,主要實現:

1:監控主從數據庫運行是否正常

2:當主數據庫出現故障時,自動將從數據庫轉換成爲主數據庫

3:使用Redis-sentinel,redis實例必須在非集羣模式下運行

 開啓哨兵功能

創建一個sentinel.conf文件,裏面設置要監控的主數據庫的名字,形如:

sentinel monitor 監控的主數據庫的名字127.0.0.1 6379 1

1 表示選舉主數據庫的最低數

(1)這個文件的內容,在運行期間會被sentinel動態進行更改

(2)能夠同時監控多個主數據庫,一行一個配置便可

相關文章
相關標籤/搜索