<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
如果單機情況下,機器重啟,記憶體資料丟失,如何保證資料的高可用呢?持久化方案
如果機器硬碟壞掉,如何保證資料的高可用呢?主從複製
Redis的主從機制:主負責讀寫,從一般唯讀不能寫(使用者端)。
持久化保證了即使 Redis 服務重啟也不會丟失資料,因為 Redis 服務重啟後會將硬碟上持久化的資料恢復到記憶體中,但是當 Redis 伺服器的硬碟損壞了可能會導致資料丟失,不過通過 Redis 的主從複製
機制就可以避免這種單點故障,如下圖:
說明:
主 Redis 中的資料有兩個副本( replication )即從 redis1 和從 redis2 ,即使一臺 Redis 伺服器宕機其它兩臺 Redis 服務也可以繼續提供服務。
主 Redis 中的資料和從 Redis 上的資料保持實時同步,當主 Redis 寫入資料時通過主從複製機制會複製到兩個從 Redis 服務上。
只有一個主 Redis ,可以有多個從 Redis 。
主從複製不會阻塞 master ,在同步資料時, master 可以繼續處理 client 請求。
一個 Redis 可以即是主又是從,如下圖:
無需特殊設定
修改從伺服器上的 redis.conf 檔案:
# slaveof <masterip> <masterport> # 表示當前【從伺服器】對應的【主伺服器】的IP是192.168.10.135,埠是6379。 slaveof 192.168.10.135 6379 replicaof 192.168.19.135 6379
全量同步
Redis 的全量同步過程主要分三個階段:
增量同步
Redis 主從複製的缺點:沒有辦法對 master 進行動態選舉,需要使用 Sentinel 機制完成動態選舉。
修改從機的 sentinel.conf :
# 哨兵sentinel監控的redis主節點的 ip port # master-name 可以自己命名的主節點名字 只能由字母A-z、數位0-9 、這三個字元".- _"組成。 # quorum 當這些quorum個數sentinel哨兵認為master主節點失聯 那麼這時 客觀上認為主節 點失聯了 # sentinel monitor <master-name> <master ip> <master port> <quorum> sentinel monitor mymaster 192.168.10.133 6379 1
其他設定項說明sentinel.conf
# 哨兵sentinel範例執行的埠 預設26379 port 26379 # 哨兵sentinel的工作目錄 dir /tmp # 哨兵sentinel監控的redis主節點的 ip port # master-name 可以自己命名的主節點名字 只能由字母A-z、數位0-9 、這三個字元".-_"組 成。 # quorum 當這些quorum個數sentinel哨兵認為master主節點失聯 那麼這時 客觀上認為主節點 失聯了 # sentinel monitor <master-name> <ip> <redis-port> <quorum> sentinel monitor mymaster 127.0.0.1 6379 2 # 當在Redis範例中開啟了requirepass foobared 授權密碼 這樣所有連線Redis範例的使用者端都 要提供密碼 # 設定哨兵sentinel 連線主從的密碼 注意必須為主從設定一樣的驗證密碼 # sentinel auth-pass <master-name> <password> sentinel auth-pass mymaster MySUPER--secret-0123passw0rd # 指定多少毫秒之後 主節點沒有應答哨兵sentinel 此時 哨兵主觀上認為主節點下線 預設30秒 # sentinel down-after-milliseconds <master-name> <milliseconds> sentinel down-after-milliseconds mymaster 30000 # 這個設定項指定了在發生failover主備切換時最多可以有多少個slave同時對新的master進行同步 # 這個數位越小,完成failover所需的時間就越長,但是如果這個數位越大,就意味著越多的slave因為replication而不可用。 # 可以通過將這個值設為 1 來保證每次只有一個slave 處於不能處理命令請求的狀態。 # sentinel parallel-syncs <master-name> <numslaves> sentinel parallel-syncs mymaster 1 # 故障轉移的超時時間 failover-timeout 可以用在以下這些方面: #1. 同一個sentinel對同一個master兩次failover之間的間隔時間。 #2. 當一個slave從一個錯誤的master那裡同步資料開始計算時間。直到slave被糾正為向正確的 master那裡同步資料時。 #3.當想要取消一個正在進行的failover所需要的時間。 #4.當進行failover時,設定所有slaves指向新的master所需的最大時間。不過,即使過了這個超 時,slaves依然會被正確設定為指向master,但是就不按parallel-syncs所設定的規則來了 # 預設三分鐘 # sentinel failover-timeout <master-name> <milliseconds> sentinel failover-timeout mymaster 180000 # SCRIPTS EXECUTION # 設定當某一事件發生時所需要執行的指令碼,可以通過指令碼來通知管理員,例如當系統執行不正常時發郵 件通知相關人員。 #對於指令碼的執行結果有以下規則: #若指令碼執行後返回1,那麼該指令碼稍後將會被再次執行,重複次數目前預設為10 #若指令碼執行後返回2,或者比2更高的一個返回值,指令碼將不會重複執行。 #如果指令碼在執行過程中由於收到系統中斷訊號被終止了,則同返回值為1時的行為相同。 #一個指令碼的最大執行時間為60s,如果超過這個時間,指令碼將會被一個SIGKILL訊號終止,之後重新執 行。 #通知型指令碼:當sentinel有任何警告級別的事件發生時(比如說redis範例的主觀失效和客觀失效等 等),將會去呼叫這個指令碼, #這時這個指令碼應該通過郵件,SMS等方式去通知系統管理員關於系統不正 常執行的資訊。呼叫該指令碼時,將傳給指令碼兩個引數,一個是事件的型別,一個是事件的描述。 #如果sentinel.conf組態檔中設定了這個指令碼路徑,那麼必須保證這個指令碼存在於這個路徑,並且 是可執行的,否則sentinel無法正常啟動成功。 #通知指令碼 # sentinel notification-script <master-name> <script-path> sentinel notification-script mymaster /var/redis/notify.sh # 使用者端重新設定主節點引數指令碼 # 當一個master由於failover而發生改變時,這個指令碼將會被呼叫,通知相關的使用者端關於master 地址已經發生改變的資訊。 # 以下引數將會在呼叫指令碼時傳給指令碼: # <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port> # 目前<state>總是「failover」, # <role>是「leader」或者「observer」中的一個。 # 引數 from-ip, from-port, to-ip, to-port是用來和舊的master和新的master(即舊的 slave)通訊的 # 這個指令碼應該是通用的,能被多次呼叫,不是針對性的。 # sentinel client-reconfig-script <master-name> <script-path> sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
通過 redis-sentinel 啟動哨兵服務
./redis-sentinel sentinel.conf
到此這篇關於Redis6 主從複製及哨兵機制的實現的文章就介紹到這了,更多相關Redis6 主從複製及哨兵機制內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45