Redis多機功能之複製

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   使用   strong   檔案   資料   

複製的目的:建立具有相同資料庫的拷貝伺服器;擴充系統處理讀請求的能力;

 

複製的定義

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) 1127.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 -11)"1"2)"3"3)"5"4)"7"5)"9"

 

 

伺服器下線處理

主伺服器或者從伺服器下線了,怎麼辦?

伺服器在複製時遭遇下線

在一個由主伺服器和從伺服器組成的系統中,主伺服器或從伺服器都有可能會下線,但是不同伺服器下線帶來的影響並不相同:

從伺服器下線:整個系統處理讀請求的效能將有所下降,但整個系統仍然可以繼續處理寫請求和讀請求,並不會導致系統停機

從伺服器下線圖例描述:

從伺服器 B 下線,導致用戶端C的訪問失敗,但只要用戶端C改為訪問其他線上的伺服器,就可以解決這個問題。

主伺服器下線:因為在整個系統中只有主伺服器能處理寫請求,那麼主伺服器下線後整個系統只能處理讀請求而無法處理寫請求導致系統停機

主伺服器下線導致主從伺服器的串連中斷,並使得整個系統無法再執行寫命令。這時從伺服器還是可以繼續處理讀請求的,但是從伺服器的資料會因為主伺服器下線而沒辦法再得到更新。

 

讓系統重新上線

為了讓系統能夠重新正常上線狀態(讓系統中的伺服器既能處理讀請求,又能處理寫請求),使用者需要向系統中的某一個從伺服器發送SLAVEOF no one命令,讓它自己變成新的主伺服器,並向其他從伺服器發送SLAVEOF命令,讓它們去複製新的從伺服器。

現在系統有了新的主伺服器,以及一個從伺服器,用戶端可以繼續使用這個系統來處理讀請求和寫請求了。

因為有一台伺服器下線了的緣故,所以重新上線的系統在效能方面可能比不上原有的系統,但這種恢複操作可以避免整個系統停機

雖然上面介紹的方法可以讓系統重新上線,但手動來執行這些操作實在太麻煩了,為此,Redis 提供了 Sentinel 程式,使用者可以使用Sentinel 來自動檢測主從伺服器的狀態,並在主伺服器下線時,自動執行容錯移轉操作(failover),讓系統重新上線。

 

Redis多機功能之複製

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.