91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Redis中如何對集群進行擴容

發布時間:2021-11-16 13:35:40 來源:億速云 閱讀:953 作者:小新 欄目:大數據

小編給大家分享一下在Redis中如何對集群進行擴容,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在使用Redis搭建集群環境時,通常會根據業務的需求,要對集群進行擴容,以滿足業務的需要。并且這也是分布式存儲比較常見的需求,在Redis中對集群進行擴容主要分為3步:

1.準備新節點

2.加入集群

3.遷移槽和數據

下面我們詳細介紹一下這3個步驟:

  • 準備新節點

我們還是向準備其它節點一樣,先修改節點配置。

# 節點端口
port 6385
# 開啟集群模式
cluster-enabled yes
# 節點超時時間,單位為毫秒
cluster-node-timeout 15000
# 集群內部配置文件
cluster-config-file "nodes-6385.conf"


啟動該節點:

./src/redis-server redis-6385.conf
./src/redis-server redis-6386.conf


但此時新增的節點還沒有和其它節點進行通信,所以該節點現在還沒有添加到集群環境中。


  • 加入集群

將新節點加入集群我們可以通過cluster meet命令。

cluster meet 127.0.0.1 6385
cluster meet 127.0.0.1 6386
在Redis中如何對集群進行擴容

我們看上圖所示,新節點雖然添加到了集群環境中,但新節點的類型是master的,也就是都是主節點。同樣我們也可以使用redis-trib.rb工具添加新節點,并且該命令可以直接支持添加從節點。

redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379
redis-trib.rb add-node 127.0.0.1:6386 127.0.0.1:6379
在Redis中如何對集群進行擴容

在生產環境中我們推薦使用redis-trib.rb命令添加新節點,因為該命令在添加新節點時會執行檢查,如果新節點已經加入集群或者包含數據,則該命令會放棄集群加入。


  • 遷移槽和數據

加入集群后需要為新節點遷移槽和相關的數據,槽在遷移的過程中集群可以正常的提供讀寫服務。下面我們詳細介紹一下這方面的內容。

1.槽遷移計劃

槽是Redis集群管理數據的基本單位,首先需要為新節點指定槽的遷移計劃,也就是將哪些節點的哪些槽遷移到新節點中。并且遷移計劃要確保每個節點負責相似數量的槽,從而保證各節點的數據均勻。槽遷移計劃確定后開始逐個把槽內數據從源節點遷移到目標節點中。


2.遷移數據

數據遷移過程是逐個槽進行的,每個槽遷移的流程如下.

流程說明:

1)對目標節點發送cluster setslot {slot} importing {sourceNodeId}命令,讓目標節點準備導入槽數據。
2)對源節點發送cluster setslot {slot} migrating {targetNodeId}命令,讓源節點準備遷出槽數據。
3)源節點循環執行cluster getkeysinslot {slot} {count}命令,獲取count個數據槽{slot}的鍵。
4)在源節點上執行migrate {targetIp} {targetPort} "" 0 {timeout} {keys} {keys …}命令。把獲取的鍵通過流水線(pipeline)機制批量遷移到目標節點。
5)重復步驟3、4部直到槽下所有的鍵值數據遷移到目標節點。
6)向集群內所有主節點發送cluster setslot {slot} node {targetNodeId}命令,通知槽分配給目標節點。

在Redis中如何對集群進行擴容

下面我們手動使用上述命令把節點6379負責的槽4096遷移到目標節點6385中,具體操作如下:

1.目標節點準備導入槽4096數據。

cluster setslot 4096 importing 目標節點ID
在Redis中如何對集群進行擴容

2.源節點注備導出槽4096數據。

cluster setslot 4096 migrating 源節點ID
在Redis中如何對集群進行擴容

3.批量獲取槽4096對應的鍵。

cluster getkeysinslot 4096 100
在Redis中如何對集群進行擴容

我們先查詢一下在6379節點是否包括上述的key。

在Redis中如何對集群進行擴容

下面我們遷移這3個鍵。

在Redis中如何對集群進行擴容

下面我們繼續在6379節點中查詢上述的3個鍵。

在Redis中如何對集群進行擴容

下面我們通知所有主節點槽4096指派給目標節點6385。

在Redis中如何對集群進行擴容

我們可以在6379節點中查看一下確定4096槽不在由6379負責。

在Redis中如何對集群進行擴容

上述內容就是手動執行槽遷移的過程。在實際的操作中因為會涉及到大量槽及鍵的遷移,所以會很不方便,因此redis-trib工具提供了槽分片功能,命令如下:

redis-trib.rb reshard host:port --form <arg> --to <arg> --slots <arg> --yes --timeout <arg> ---pepeline <arg>


下面我們介紹一下上述命令參數說明:

  • host:port:比傳參數,集群內任意節點地址,用來獲取整個集群信息。

  • --form:制定源節點的id,如果有多個源節點,則使用逗號分割。

  • --to:需要遷移的目標節點id,并且目標節點只能指定一個。

  • --slots:需要遷移槽的總數量。

  • --yes:當打印出reshard執行計劃時,是否需要用戶輸入yes確認后再執行reshard。

  • --timeout:控制每次migrate操作的超時時間,默認為60000毫秒。

  • --pipeline:控制每次批量遷移鍵的數量,默認為10。


下面我們使用reshard命令遷移剩余槽的數據。

在Redis中如何對集群進行擴容

上述命令執行完后reshard命令會提示我們輸入遷移槽的數量,我們暫時輸入4096。

在Redis中如何對集群進行擴容

當我們輸入完遷移槽的數量后,會提示我們輸入目標節點ID,我們輸入6385節點ID。

在Redis中如何對集群進行擴容

同樣,我們輸入完目標節點后,會提示我們輸入輸入源節點ID,也就是主節點ID,所以我們輸入6379、6380、6381三個主節點ID,并且已done命令結束。

在Redis中如何對集群進行擴容

當輸入完上述命令后,會打印出所有槽從源節點到目標節點的計劃,并讓我們輸入yes命令后才會繼續執行遷移工作。

在Redis中如何對集群進行擴容

輸入yes命令后在通過cluster nodes命令查看節點狀態。

在Redis中如何對集群進行擴容

下面我們還有最后一個步驟,就是當初我們雖然把6385和6386節點添加到了集群,并且已經將部分槽和數據遷移到了6385節點上,但該節點并沒有相應的從節點,所以下面的步驟就是將6386節點設置為6385節點的從節點。

在Redis中如何對集群進行擴容

以上是“在Redis中如何對集群進行擴容”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达拉特旗| 惠东县| 西昌市| 新蔡县| 东莞市| 长岛县| 吉木萨尔县| 赣州市| 临漳县| 沁阳市| 老河口市| 嵩明县| 呼玛县| 通海县| 平谷区| 昌平区| 闽侯县| 西和县| 安岳县| 兰坪| 新闻| 德令哈市| 前郭尔| 桃园县| 呼图壁县| 南充市| 广昌县| 嘉善县| 灵石县| 武山县| 永嘉县| 米林县| 望江县| 潞西市| 公主岭市| 苗栗市| 宁城县| 陆良县| 沙雅县| 旌德县| 彭州市|