Redis多机功能之复制
復制的目的:創建具有相同數據庫的拷貝服務器;擴展系統處理讀請求的能力;
?
復制的定義
Redis的復制(replication)功能允許用戶根據一個Redis服務器來創建任意多個該服務器的復制品,其中被復制的服務器為主服務器(master),而通過復制創建出來的服務器則稱為從服務器(slave);
主從服務器兩者擁有相同的數據庫數據:只要主從服務器之間的網絡連接正常,主服務器就會一直將發生在自己身上的數據更新同步給從服務器,從而一直保證主從服務器的數據相同;
一個主服務器可以擁有1到N個從服務器;
?
使用從服務器來處理讀命令請求,通過復制來擴展系統處理讀請求的能力?
Redis允許從服務器執行客戶端發送的命令請求,比如:GET、LRANGE等;
因為主從服務器擁有相同的數據庫數據,所以從服務器在執行客戶端發送的讀命令時,獲得的結果與主服務器執行相同的讀命令所獲得的結果是一樣的;
所以用戶可以將原本由主服務器負責處理的一部分(甚至全部)讀命令請求轉交給從服務器處理,從而降低主服務器在處理讀命令請求方面的負載,并擴展整個系統處理讀命令請求的能力;
通過添加從服務器可以線性地擴展整個系統處理讀命令請求的能力?
?
從服務器的創建與使用
創建從服務器,Redis提供了兩種方法為某個主服務器創建從服務器
1、使用SLAVEOF master-ip master-port命令
比如:向一個服務器發送slave hadoop000 6379,可以讓接收到該命令的服務器變為hadoop000:6379的從服務器;
在將一個服務器設置成從服務器后,可以通過向它發送SLAVEOF no one命令來讓它變回一個主服務器(數據庫已有的數據會被保留);
2、配置文件中配置:slaveof master-ip master-port 選項來讓服務器成為指定服務器的從服務器;
例如:如果客戶端對服務器127.0.0.1:6380發送命令SLAVEOF 127.0.0.1 6379,那么127.0.0.1:6380將成為127.0.0.1:6379的從服務器;
?
主從服務器操作示例:
127.0.0.1:6379> SET msg "hello world" OK127.0.0.1:6380> GET msg "hello world"127.0.0.1:6379> INCR counter (integer) 1 127.0.0.1:6379> INCR counter (integer) 2127.0.0.1:6380> GET counter "2"127.0.0.1:6379> RPUSH lst 1 3 5 7 9 (integer) 5127.0.0.1:6380> LRANGE lst 0 -1 1)"1" 2)"3" 3)"5" 4)"7" 5)"9"?
?
服務器下線處理
主服務器或者從服務器下線了,怎么辦?
服務器在復制時遭遇下線
在一個由主服務器和從服務器組成的系統中,主服務器或從服務器都有可能會下線,但是不同服務器下線帶來的影響并不相同:
從服務器下線:整個系統處理讀請求的性能將有所下降,但整個系統仍然可以繼續處理寫請求和讀請求,并不會導致系統停機;
從服務器下線圖例描述:
從服務器 B 下線,導致客戶端C的訪問失敗,但只要客戶端C改為訪問其他在線的服務器,就可以解決這個問題。
主服務器下線:因為在整個系統中只有主服務器能處理寫請求,那么主服務器下線后整個系統只能處理讀請求而無法處理寫請求,導致系統停機;
主服務器下線導致主從服務器的連接中斷,并使得整個系統無法再執行寫命令。這時從服務器還是可以繼續處理讀請求的,但是從服務器的數據會因為主服務器下線而沒辦法再得到更新。
?
讓系統重新上線
為了讓系統能夠重新正常上線狀態(讓系統中的服務器既能處理讀請求,又能處理寫請求),用戶需要向系統中的某一個從服務器發送SLAVEOF no one命令,讓它自己變成新的主服務器,并向其他從服務器發送SLAVEOF命令,讓它們去復制新的從服務器。
現在系統有了新的主服務器,以及一個從服務器,客戶端可以繼續使用這個系統來處理讀請求和寫請求了。
因為有一臺服務器下線了的緣故,所以重新上線的系統在性能方面可能比不上原有的系統,但這種恢復操作可以避免整個系統停機。
雖然上面介紹的方法可以讓系統重新上線,但手動來執行這些操作實在太麻煩了,為此,Redis 提供了 Sentinel 程序,用戶可以使用Sentinel 來自動檢測主從服務器的狀態,并在主服務器下線時,自動執行故障轉移操作(failover),讓系統重新上線。
?
總結
以上是生活随笔為你收集整理的Redis多机功能之复制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS 实现加载动画之四-圆点旋转
- 下一篇: zencart分类页每页显示产品数量自定