更新時間:2022-02-15 09:44:15 來源:動力節(jié)點 瀏覽2293次
Redis主從復制也應該是相同原理在其他數(shù)據(jù)庫中的應用,也可以稱為讀寫分離;還有一個主數(shù)據(jù)庫和從數(shù)據(jù)庫。
寫數(shù)據(jù)庫一般是主數(shù)據(jù)庫,而讀數(shù)據(jù)庫則是從數(shù)據(jù)庫。
缺點:由于寫數(shù)據(jù)庫的寫操作和分布,存在主從數(shù)據(jù)與寫數(shù)據(jù)庫的同步操作不一致的可能。
* 如果只有一個主庫,多組從庫,不能保證高可用(需要手動維護,切換主庫)
一般原則:
(1)主庫(寫)正常配置
(2)數(shù)據(jù)庫中配置的主數(shù)據(jù)庫
(3)接收到SYNC指令后,通過RDB快照接收當前數(shù)據(jù)庫,然后發(fā)送隊列保存快照創(chuàng)建周期和操作。
(4)從數(shù)據(jù)庫接收到快照后,執(zhí)行本地;并接收主庫隊列的增量同步數(shù)據(jù)
(5)所有寫入操作都通過主庫,而主庫是從服務(wù)器同步到從服務(wù)器推送增量數(shù)據(jù)異步執(zhí)行的。
(6)大部分的讀操作都是從數(shù)據(jù)庫進行的
(7)Redis雖然是單線程,但不代表所有操作都是單線程,只是主線程是單線程模式。為了保持 REDIS 的高性能讀寫,主數(shù)據(jù)的寫操作和從數(shù)據(jù)庫同步的數(shù)據(jù)是異步的。
如何配置:
在配置文件中添加(僅來自數(shù)據(jù)庫):
5.0 緊隨其后:
REPLICAOF 本地主機6379
前
奴隸本地主機6379
如果主庫掛了,只能手動切換,從服務(wù)中取消命令
REPLICAOF沒有人
顧名思義,哨兵就是站崗——監(jiān)控。那么什么是監(jiān)控呢?這是即將來自一個主機,一個master數(shù)據(jù)庫如果崩潰了,那么服務(wù)就中斷了,那么sentinel就對應了這個問題。
當主庫掛起時,可以使用哨兵監(jiān)控(也可以使用Guard Wiring幫助理解),將從服務(wù)器轉(zhuǎn)換為主服務(wù)器。哨兵也可以相互監(jiān)控。
配置:
(1)我使用的是源碼提供的u??til目錄下的ITILL腳本,安裝3個端口的Redis-Server服務(wù)
(2)在/etc/redis/對應配置文件中添加遞增
哨兵監(jiān)控大師127.0。0.1 6379 2
最后一個數(shù)字表示投票選舉新主節(jié)點的票數(shù)
(3)然后在/etc/init.d/的對應配置中,添加--sentinelstarts
(4)重啟服務(wù):服務(wù)redis_6xxx重啟
PS:哨兵模式,會自動修改配置文件,默認應該是輪詢模式,看日志,服務(wù)掛掉后不要非常實時切換主節(jié)點。
集群模式可以作為滑塊模式使用,可以增加橫向擴展和切片的功能。
即使使用哨兵模式,系統(tǒng)可能仍有數(shù)據(jù)量增加,這種情況下可能需要數(shù)據(jù)執(zhí)行服務(wù)器部分(客戶端切片,不同客戶端可以根據(jù)需要連接不同的REDIS數(shù)據(jù)庫)
集群模式實現(xiàn)了服務(wù)器的分區(qū)功能。
客戶端分區(qū)是客戶端決定了數(shù)據(jù)將存儲在哪個REDIS節(jié)點或讀取哪個Redis節(jié)點。大多數(shù)客戶端都實現(xiàn)了客戶端分區(qū)。
代理分區(qū)是指客戶端將請求發(fā)送給代理,然后代理決定哪個節(jié)點寫入數(shù)據(jù)或讀取數(shù)據(jù)。代理根據(jù)分區(qū)規(guī)則確定哪些REDIS實例,然后根據(jù)Redis的響應結(jié)果返回給客戶端。Redis 和 memcached Twemproxy的代理實現(xiàn)
Query Routing是指客戶端隨機請求任意一個 REDIS 實例,然后將請求轉(zhuǎn)發(fā)到正確的 REDIS 節(jié)點。Redis Cluster 實現(xiàn)了混合形式的查詢路由,但并不直接將請求從一個 Redis 節(jié)點轉(zhuǎn)發(fā)到另一個節(jié)點,而是直接在客戶端的幫助下進行。重定向到正確的 REDIS 節(jié)點。如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Redis教程,里面的課程更加細致全面,通俗易懂,即使沒有基礎(chǔ)也能聽懂,希望對大家的學習能夠有所幫助。