欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

redis集群主從節(jié)點(diǎn)自動(dòng)切換方式

 更新時(shí)間:2024年01月18日 09:47:37   作者:nedjie  
這篇文章主要介紹了redis集群主從節(jié)點(diǎn)自動(dòng)切換方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

redis集群主從節(jié)點(diǎn)自動(dòng)切換

最近在將redis作為數(shù)據(jù)庫使用(redis中存放大量數(shù)據(jù))的項(xiàng)目中,偶然發(fā)現(xiàn)redis的主從節(jié)點(diǎn)發(fā)生了變化,但是沒有任務(wù)報(bào)錯(cuò),redis集群的各節(jié)點(diǎn)也沒有fail狀態(tài),因此記錄學(xué)習(xí)一下,redis的深層機(jī)制。

為什么

首先redis是單線程的,所有的命令發(fā)送的redis會(huì)進(jìn)入一個(gè)隊(duì)列,依次執(zhí)行。

當(dāng)數(shù)據(jù)量很大時(shí),執(zhí)行flushall、keys、scan等耗時(shí)較長的命令時(shí),就會(huì)照成redis節(jié)點(diǎn)阻塞。

其次,了解一下redis的集群節(jié)點(diǎn)檢測機(jī)制。redis集群的其他節(jié)點(diǎn),每隔一斷時(shí)間,就會(huì)向集群中的其他節(jié)點(diǎn)發(fā)送ping包,以檢測節(jié)點(diǎn)是否還活著。

如果此時(shí),某個(gè)主節(jié)點(diǎn)阻塞了,收到pong包的時(shí)間超時(shí),大于 cluster-node-timeout,就會(huì)自動(dòng)切換主從節(jié)點(diǎn)。

此時(shí),在redis-cli中查看cluster nodes,會(huì)發(fā)現(xiàn)節(jié)點(diǎn)會(huì)短暫的出現(xiàn)fail狀態(tài)。

當(dāng)主從節(jié)點(diǎn)切換完畢,redis又會(huì)重新掃描一下集群中的所有redis節(jié)點(diǎn),當(dāng)阻塞的redis節(jié)點(diǎn),執(zhí)行完之后,又會(huì)重新回到正常狀態(tài)。

解決

了解了上面說的redis機(jī)制之后,如果想要避免redis節(jié)點(diǎn)自動(dòng)切換就很簡單了,只需要調(diào)大redis.conf中的配置項(xiàng)cluster-node-timeout(默認(rèn)15000 millisec)即可。

Redis的主從復(fù)制

主從復(fù)制

主機(jī)數(shù)據(jù)更新后根據(jù)配置和策略,自動(dòng)同步到從機(jī)的master/slave機(jī)制,Master以寫為主,Slave以讀為主。

一主二從

一主二從原理

1、配從(庫)不配主(庫)

2、配從(庫): slaveof 主庫IP 主庫端口

3、主寫從讀、讀寫分離

4、從連前后同

5、主斷從待命、從斷重新連

一主二從搭建

1、一臺(tái)服務(wù)器模擬三臺(tái)主機(jī):

  • 第一步:將redis.conf 拷貝三份,名字分別是,redis6379.conf,redis6380.conf,redis6381.conf
  • 第二步:修改三個(gè)文件的port端口,pid文件名,日志文件名,rdb文件名

如:

port 6379
pidfile /var/run/redis_6379.pid
logfile “6379.log”
dbfilename dump6379.rdb
  • 第三步:分別打開三個(gè)窗口模擬三臺(tái)服務(wù)器,開啟redis服務(wù)。

2、查詢主從信息:info replication

3、寫操作6379:

4、設(shè)置主從關(guān)系:

在6380和6381主機(jī)上分別執(zhí)行命令:slaveof 127.0.0.1 6379

另一種方式,就是修改6380和6381的配置文件,在最后加上:

注意:如果主redis設(shè)置了密碼,從庫的redis.conf中還需要設(shè)置masterauth為主redis的密碼。

5、全量復(fù)制:在6380和6381分別執(zhí)行命令get k1

6、增量復(fù)制:6379執(zhí)行命令:set k2 v2。然后6380端口和6381端口,分別執(zhí)行命令:get k2

7、主寫從讀、讀寫分離:在6380和6381上執(zhí)行寫操作set k3 v3

8、主機(jī)宕機(jī):6379執(zhí)行指令shutdown,并查看6380和6381的redis信息 從機(jī)原地待命。

9、主機(jī)宕機(jī)后恢復(fù):重啟6379,并且執(zhí)行寫命令set k4 v4;6380和6381上分別執(zhí)行g(shù)et k4 主機(jī)重啟后,一切正常。

10、從機(jī)宕機(jī):6380執(zhí)行指令shutdown,并查看6379和6381的redis信息

11、從機(jī)宕機(jī)后恢復(fù):重啟6380,并查看6380、6379和6381的redis信息

注意:從機(jī)跟master斷開聯(lián)系,必須重新連接,除非寫進(jìn)配置文件。

12、從機(jī)恢復(fù)連主機(jī)前,主機(jī)寫操作:6379執(zhí)行寫命令set k5 v5,6380和6381分別執(zhí)行命令get k5

13、從機(jī)恢復(fù)連接主機(jī),6380執(zhí)行命令:slaveof 127.0.0.1 6379,并且執(zhí)行命令:get k5

14、從機(jī)上位:

  • 第一步:主機(jī)宕機(jī),6379執(zhí)行命令:shutdown
  • 第二步:6380斷開主從關(guān)系,執(zhí)行命令:SLAVEOF no one
  • 第三步:重新搭建主從,6381執(zhí)行命令:info replication,SLAVEOF 127.0.0.1 6380
  • 第四步:之前主機(jī)恢復(fù),重啟6379的Redis服務(wù),并執(zhí)行命令:info replication

在6379主機(jī)宕機(jī)后,6380從機(jī)斷開主從關(guān)系,6381開始還在原地待命;后來6380從機(jī)上位,6381投靠6380,6379主機(jī)即使回來但它已是孤寡老人,空頭司令。

15、天堂變地獄:6379執(zhí)行命令saveof 127.0.0.1 6381,并在6379和6381執(zhí)行info replication

一臺(tái)主機(jī)配多臺(tái)從機(jī),一臺(tái)從機(jī)再配多臺(tái)從機(jī),從而實(shí)現(xiàn)了龐大的集群架構(gòu)。同時(shí)也減輕了一臺(tái)主機(jī)的壓力,缺點(diǎn)是增加了服務(wù)器間的延遲。

復(fù)制原理

全量復(fù)制

slave啟動(dòng)成功連接到master后會(huì)發(fā)送一個(gè)sync命令;Master接到命令啟動(dòng)后臺(tái)的存盤進(jìn)程,同時(shí)收集所有接收到的用于修改數(shù)據(jù)集命令,在后臺(tái)進(jìn)程執(zhí)行完畢之后,master將傳送整個(gè)數(shù)據(jù)文件到slave,以完成一次完全同步;slave服務(wù)在接收到數(shù)據(jù)庫文件數(shù)據(jù)后,將其存盤并加載到內(nèi)存中。

只要是重新連接master,一次完全同步(全量復(fù)制)將被自動(dòng)執(zhí)行。

增量復(fù)制

Master將新的所有收集到的修改命令依次傳給slave,完成同步。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • redis使用跳躍表而不是樹的原因解析

    redis使用跳躍表而不是樹的原因解析

    Redis中支持五種數(shù)據(jù)類型中有序集合Sorted Set的底層數(shù)據(jù)結(jié)構(gòu)使用的跳躍表,為何不使用其他的如平衡二叉樹、b+樹等數(shù)據(jù)結(jié)構(gòu)呢?這篇文章主要介紹了redis使用跳躍表而不是樹的原因解析,需要的朋友可以參考下
    2024-02-02
  • 基于Redis分布式BitMap的應(yīng)用分析

    基于Redis分布式BitMap的應(yīng)用分析

    這篇文章主要介紹了基于Redis分布式BitMap的應(yīng)用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 關(guān)于Redis單線程的正確理解

    關(guān)于Redis單線程的正確理解

    很多同學(xué)對Redis的單線程和I/O多路復(fù)用技術(shù)并不是很了解,所以我用簡單易懂的語言讓大家了解下Redis單線程和I/O多路復(fù)用技術(shù)的原理,對學(xué)好和運(yùn)用好Redis打下基礎(chǔ),感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Redis底層類型之json命令使用

    Redis底層類型之json命令使用

    這篇文章主要為大家介紹了Redis底層類型之json命令使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • CentOS系統(tǒng)中Redis數(shù)據(jù)庫的安裝配置指南

    CentOS系統(tǒng)中Redis數(shù)據(jù)庫的安裝配置指南

    Redis是一個(gè)基于主存存儲(chǔ)的數(shù)據(jù)庫,性能很強(qiáng),這里我們就來看一下CentOS系統(tǒng)中Redis數(shù)據(jù)庫的安裝配置指南,包括將Redis作為系統(tǒng)服務(wù)運(yùn)行的技巧等,需要的朋友可以參考下
    2016-06-06
  • redis哨兵模式說明與搭建詳解

    redis哨兵模式說明與搭建詳解

    這篇文章主要介紹了redis哨兵模式說明與搭建詳解,需要的朋友可以參考下
    2023-01-01
  • Redis主從復(fù)制實(shí)現(xiàn)原理分析

    Redis主從復(fù)制實(shí)現(xiàn)原理分析

    Redis主從復(fù)制通過Sync和CommandPropagate階段實(shí)現(xiàn)數(shù)據(jù)同步,2.8版本后引入Psync指令,根據(jù)復(fù)制偏移量進(jìn)行全量或部分同步,優(yōu)化了數(shù)據(jù)傳輸效率
    2025-01-01
  • 手動(dòng)實(shí)現(xiàn)Redis的LRU緩存機(jī)制示例詳解

    手動(dòng)實(shí)現(xiàn)Redis的LRU緩存機(jī)制示例詳解

    這篇文章主要介紹了手動(dòng)實(shí)現(xiàn)Redis的LRU緩存機(jī)制示例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Redis為什么要存兩次數(shù)據(jù)

    Redis為什么要存兩次數(shù)據(jù)

    這篇文章主要介紹了Redis為什么要存兩次數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2021-02-02
  • Redis實(shí)現(xiàn)驗(yàn)證碼發(fā)送并限制每日發(fā)送次數(shù)的示例代碼

    Redis實(shí)現(xiàn)驗(yàn)證碼發(fā)送并限制每日發(fā)送次數(shù)的示例代碼

    本文主要介紹了Redis實(shí)現(xiàn)驗(yàn)證碼發(fā)送并限制每日發(fā)送次數(shù)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論