redis主從復制原理
基本概念
持久化保證了即使 Redis 服務重啟也不會丟失數據,因為 redis 服務重啟后會將硬盤上持久化的數據恢復到內存中,但是當 redis 服務器的硬盤損壞了可能會導致數據丟失,如果通過 redis 的主從復制機制就可以避免這種單點故障.
主節點負責寫數據,從節點負責讀數據,主節點定期把數據同步到從節點保證數據的一致性
解釋說明
主 redis 中的數據有兩個副本(replication)即從 redis1 和從 redis2,即使一臺 redis 服務器宕機其它兩臺 redis 服務也可以繼續提供服務
主 redis 中的數據和從 redis 上的數據保持實時同步,當主 redis 寫入數據時通過主從復制機制會復制到兩個從 redis 服務上。
只有一個主 redis,可以有多個從 redis。
主從復制不會阻塞 master,在同步數據時,master 可以繼續處理 client 請求。
主從作用
數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。
故障恢復:當主機宕掉了之后,就沒有辦法向數據庫中寫數據了,怎么辦?其余的 Salve 根據配置的策略,選出一臺晉升為 Master,其余的 Slave 成為新 Master 的從機,當原來宕掉的 Master 恢復后,自動成為 Slave,實現了容災恢復。
負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫 Redis 數據時應用連接主節點,讀 Redis 數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高 Redis 服務器的并發量。
高可用:保證了數據的高可用。因為數據在多臺服務器上存儲了多份,即使一臺機器宕掉了,其余的機器還可以頂上。
讀寫分離: 什么叫讀寫分離?寫數據在 Master 上,讀數據是在 Slave 上,這就叫讀寫分離。它緩解了以往 Master 既要處理讀數據又要處理寫數據的壓力,Master 上負責寫,Slave 上負責讀,大大提升了數據庫服務器的性能。
數據同步
redis 2.8版本以上使用psync命令完成同步,過程分“全量”與“部分”復制
全量復制:一般用于初次復制場景(第一次建立SLAVE后全量)
部分復制:網絡出現問題,從節點再次連接主節點時,主節點補發缺少的數據,每次數據增量同步
心跳:主從有長連接心跳,主節點默認每10S向從節點發ping命令,repl-ping-slave-period控制發送頻率
主從故障如何故障轉移?
主節點(master)故障,從節點slave-1端執行 slaveof no one后變成新主節點;
其它的節點成為新主節點的從節點,并從新節點復制數據;
需要人工干預,無法實現高可用。
主從的缺點
主從復制,若主節點出現問題,則不能提供服務,需要人工修改配置將從變主
主從復制主節點的寫能力單機,能力有限
單機節點的存儲能力也有限
Redis
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。