Redis的主從復制及哨兵模式

一、Redis的主從復制

1.1 Redis主從復制定義

主從復制是redis實現高可用的基礎,哨兵模式和集群都是在主從復制的基礎之上實現高可用;
主從復制實現數據的多級備份,以及讀寫分離(主服務器負責寫,從服務器只能讀)

1.2 主從復制流程

(主從復制推薦使用AOF)

1)若啟動一個slave機器進程,則它會向Master機器發送一個sync command命令,請求同步連接

2)無論是第一次連接還是重新連接,Master機器都會啟動一個后臺進程,將數據快照保存到數據文件中執行bgsave操作),同時Master還會記錄修改數據的所有命令并緩存在數據文件中

3)后臺進程完成緩存操作之后,Master機器就會向slave機器發送數據文件,slave端機器將數據文件保存到硬盤上,然后將其加載到內存中,接著Master機器就會將修改數據的所有操作一并發送給slave端機器若slave出現故障導致宕機,則恢復正常后會自動重新連接

4)Master機器收到slave端機器的連接后,將其完整的數據文件發送給slave端機器,如果Master同時收到多個slave發來的同步請求,則Master會在后臺啟動一個進程以保存數據文件,然后將其發送給所有的slave端機器,確保所有的slave端機器都正常

1.3 主從復制實操(一主二從)

主從復制架構

20.0.0.91:MASTER
20.0.0.92:SLAVE1
20.0.0.93:SLAVE2

關閉防火墻

systemctl stop firewalld
setenforce 0

修改master配置文件

vim /etc/redis/6379.conf 
--70--
bind 0.0.0.0
#修改監聽地址為0.0.0.0,允許所有網段訪問--137--
daemonize yes
#開啟守護進程,后臺啟動 --172--
logfile /var/log/redis_6379.log
#指定日志文件存放目錄--264--
dir /var/lib/redis/6379
#指定工作目錄--700--
appendonly yes
#開啟AOF持久化功能/etc/init.d/redis_6379 restart

修改slave配置文件

#salve1、slave2相同操作
vim /etc/redis/6379.conf 
--70--
bind 0.0.0.0
#修改監聽地址為0.0.0.0,允許所有網段訪問--137--
daemonize yes
#開啟守護進程,后臺啟動 --172--
logfile /var/log/redis_6379.log
#指定日志文件存放目錄--264--
dir /var/lib/redis/6379
#指定工作目錄--288--
replicaof 20.0.0.91 6379
#指定要同步的Master節點的IP和端口--700--
appendonly yes
#開啟AOF持久化功能
??
/etc/init.d/redis_6379 restart  #重啟redis
ss -natp | grep redis      #查看主從服務器是否已建立連接

?

測試

測試主從復制以及讀寫分離

?

測試slave斷開時,master寫入數據,slave恢復正常后能否復制

二、Rdis的哨兵模式

在主從復制的基礎上,哨兵引入了主節點的自動故障轉移。

2.1 哨兵模式的組成

哨兵節點: 哨兵系統由一個或多個哨兵節點組成,哨兵節點是特殊的redis節點,不存儲數據。

數據節點: 主節點和從節點都是數據節點。

2.2?哨兵模式的原理

哨兵是一個分布式系統,部署在每一個redis的節點之上,用于在主從結構之間,對每一臺redis的服務進行監控。

1).監控: 哨兵會不斷地檢查主節點和從節點是否運作正常。
每個哨兵節點每隔一秒,通過ping命令方式,檢測主從之間的心跳線。
主節點在一定時間內沒有回復或者回復了錯誤的消息,此時哨兵就會主觀地認為主節點下線,
超過半數的哨兵節點認為主節點下線時,才會將主節點認為客觀下線。

2).自動故障轉移: 當主節點不能正常工作時,哨兵會開始自動故障轉移操作,它會將失效主節點的其中一個從節點升級為新的主節點,并讓其它從節點改為復制新的主節點。
主節點的選舉原則:
已經下線的從節點不會被選為主節點;
選擇配置文件當中優先級最高的從節點作為主節點(replica-priority 100);
選擇一個復制數據最完整的從節點作為主節點。
(如何實現切換:主節點出現故障時,從節點通過投票的方式選擇一個新的master )

3).通知(提醒): 哨兵可以將故障轉移的結果發送給客戶端。

2.3 哨兵模式實操

修改哨兵節點配置文件

#所有節點相同操作
vim /opt/redis-5.0.7/sentinel.conf
--17--
protected-mode no
#取消注釋,關閉保護模式--21--
port 26379
#Redis哨兵默認的監聽端口--26--
daemonize yes
#指定sentinel為后臺啟動--36--
logfile "/var/log/sentinel.log"
#指定日志文件存放路徑--65--
dir "/var/lib/redis/6379"
#指定數據庫存放路徑--84--
sentinel monitor mymaster 20.0.0.91 6379 2 
#指定該哨兵節點監控20.0.0.91:6379這個主節點,該主節點的名稱是mymaster。
#最后的2的含義與主節點的故障判定有關:至少需要2個哨兵節點同意,才能判定主節點故障并進行故障轉移
?
--113--
sentinel down-after-milliseconds mymaster 30000
#判定服務器down掉的時間周期,默認30000毫秒(30秒)--146--
sentinel failover-timeout mymaster 180000
#同一個sentinel對同一個master兩次failover之間的間隔時間(180秒)

啟動哨兵模式并查看哨兵狀態

#啟動三臺節點上的哨兵模式
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &#在哨兵節點查看監控狀態
[root@localhost ~]# redis-cli -p 26379 info Sentinel

模擬故障測試

#Master
ps -elf | grep redis
kill -9 pid號  #Master節點上redis-server的進程號
netstat -natp | grep redis

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160903.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ChatGPT 也并非萬能,品牌如何搭上 AIGC「快班車」

內容即產品的時代,所見即所得,所得甚至超越所見。 無論是在公域的電商平臺、社交媒體,還是品牌私域的官網、社群、小程序,品牌如果想與用戶發生連接,內容永遠是最前置的第一要素。 01 當內容被消費過,就…

【python學習】基礎篇-常用模塊-os目錄操作

os模塊提供了許多與操作系統交互的函數,包括操作目錄的函數。 1、導入os模塊: import os2、獲取當前工作目錄:使用os模塊的getcwd()方法獲取當前工作目錄。 current_dir os.getcwd() print(current_dir)3、改變當前工作目錄:使…

2023全球數字貿易創新大賽7-8

目錄 2023全球數字貿易創新大賽 數據要素:數字經濟最核心的資源。(存儲,流通,使用)

C++虛析構和純虛析構解決delete堆區父類指針無法調用子類的構造函數

#include<iostream> #include<string>using namespace std;//虛析構和純虛析構 class Animal { public:Animal(){cout<<"執行Animal的構造函數"<<endl;}~Animal(){cout<<"執行Animal的析構函數"<<endl;}virtual void …

HTML新手入門筆記整理:HTML基本介紹

網頁 靜態頁面 僅可供用戶瀏覽&#xff0c;不具備與服務器交互的功能。 動態頁面 可供用戶瀏覽&#xff0c;具備與服務器交互的功能。 HTML HTML&#xff0c;全稱HyperText Markup Language&#xff08;超文本標記語言&#xff09;,是一種用于創建網頁的標準標記語言。用于…

HIS醫療項目

文章目錄 醫療項目簡介HIS項目介紹HIS架構解析HIS業務流程圖HIS項目架構圖 HIS組件解析——服務支撐 內存設置為4G或以上部署NGINX服務部署web安裝JDK部署Elasticsearch安裝ik中文分詞器 部署rabbitmq部署MySQL服務安裝MySQL服務建庫、授權用戶導入數據 部署Redis測試Redis 部署…

深入了解 JavaScript 中的 DOM 和 BOM

JavaScript 是一種強大的編程語言&#xff0c;它不僅可以操作網頁的內容&#xff0c;還可以控制瀏覽器的行為。在 JavaScript 中&#xff0c;DOM&#xff08;文檔對象模型&#xff09;和 BOM&#xff08;瀏覽器對象模型&#xff09;起著至關重要的作用。本文將深入探討這兩個概…

io+day5

1&#xff0c;select服務端 1 #include<myhead.h>2 3 #define PORT 8888 //端口號4 #define IP "192.168.228.165" //IP地址5 6 7 int main(int argc, const char *argv[])8 {9 //1、創建用于接受連接的套接字10 int sfd socket(…

pikachu靶場PHP反序列化漏洞

pikachu靶場PHP反序列化漏洞 源碼分析 查看源代碼 class S{var $test "pikachu";function __construct(){echo $this->test;} }// O:1:"S":1:{s:4:"test";s:29:"<script>alert(xss)</script>";} $html; if(isset($_PO…

unityplayer.dll如何安裝?unityplayer.dll缺失的解決方法

Unityplayer.dll是Unity引擎所需的一個重要動態鏈接庫&#xff08;DLL&#xff09;文件&#xff0c;負責在運行Unity創建的游戲或應用程序時處理相關的軟件邏輯。如果此文件意外丟失&#xff0c;可能會導致錯誤提示&#xff0c;甚至阻止程序的正常運行。因此&#xff0c;對于許…

Threejs_12 物體陰影的實現

所以在Threejs的畫布世界之中&#xff0c;一個物體有自己的影子呢&#xff1f; 陰影效果的實現 你需要先知道在threejs世界中&#xff0c;有哪些燈光或者材質是可以產生陰影效果的 環境光沒有陰影 平行光有陰影(太陽) 點光源有陰影(燈泡) 聚光燈有陰影(手電筒) 平面光源沒有…

GB/T 40623-2021 船用防靜電升高地板檢測

防靜電升高地板是指由地板構架、可拆地板和防靜電貼面搭建的地板。 GB/T 40623-2021 船用防靜電升高地板測試&#xff1a; 測試項目 測試方法 尺寸偏差與形位公差 GB/T 40623 表面處理 GB/T 40623 外觀 GB/T 40623 升高地板電性能 GB/T 40623 升高地板的載荷性能-系…

代碼隨想錄二刷 | 鏈表 |環形鏈表II

代碼隨想錄二刷 &#xff5c; 鏈表 &#xff5c;環形鏈表II 題目描述解題思路 & 代碼實現判斷鏈表是否有環如何找到環的入口 題目描述 142.環形鏈表II 給定一個鏈表的頭節點 head &#xff0c;返回鏈表開始入環的第一個節點。 如果鏈表無環&#xff0c;則返回 null。 如…

想發EI國際學術會議,但學校要求知網,這種情況該如何解決?

#學術發表# #國際會議# #知網要求# 近期后臺有私信想把論文發表在EI國際會議上&#xff0c;但是畢業要求又規定必須在知網上發表。看起來處境比較困難&#xff0c;作為一名師兄&#xff0c;我來分享下我的建議。 先要明確知網和EI國際會議的不同和各自的優劣&#xff1a; 知…

圖神經網絡:消息傳遞算法

一、說明 圖網絡-GNN&#xff08;Graph Neural Networks&#xff09;是近幾年研究的主題之一&#xff0c;雖不及深度神經網絡那么火爆&#xff0c;但在一些領域&#xff0c;如分子化學方面是不得不依賴的理論。本文就一些典型意義的圖神經網絡消息傳遞展開闡述。 二、圖網絡簡述…

Vue 3 渲染機制解密:從模板到頁面的魔法

Vue 3 渲染機制解密 前言Vue 3的響應性系統1. **Reactivity API:**2. **Proxy 對象:**3. **Getter 和 Setter:**4. **依賴追蹤:**5. **批量更新:**6. **異步更新:**7. **遞歸追蹤:**8. **刪除屬性:** 虛擬DOM的角色1. **減少直接操作真實 DOM:**2. **高效的批量更新:**3. **跨平…

【java】想要限制每次查詢的結果集不能超過10000行,該如何實現?

文章目錄 前言 前言 對于一些Saas化軟件&#xff0c;當某個租戶在執行查詢SQL時&#xff0c;如果查詢條件出現了BUG&#xff0c;導致去查了所有租戶的數據&#xff0c;這種情況是非常嚴重的&#xff0c;此時就需要在架構層面做限制&#xff0c;禁止一些特殊SQL的執行&#xff…

@PropertySource適配通配符加載到Environment的一種方案

PropertySource可將配置文件加載到內存&#xff0c;時間有限說干的&#xff0c;PropertySource注解有4個參數&#xff0c;其中value表示要加載文件的路徑&#xff0c;這個參數不支持通配符。還有一個參數PropertySourceFactory是加載配置文件的工廠&#xff0c;這兩個參數配合使…

【GUI】-- 13 貪吃蛇小游戲之食物及成績判斷

GUI編程 04 貪吃蛇小游戲 4.4 第四步&#xff1a;食物及成績判斷 首先&#xff0c;添加食物與分數的數據定義&#xff1a; //食物的坐標int foodX;int foodY;Random random new Random();//積分面板數據結構int score;在初始化方法中&#xff0c;添加(畫出)食物與分數&…

CSDN最新最全pytest系列——pytest-base-url插件之配置可選的項目系統UR

前言 ①當我們的自動化代碼完成之后&#xff0c;通常期望可以在不同的環境進行測試&#xff0c;此時可以將項目系統的URL單獨拿出來&#xff0c;并且可以通過pytest.ini配置文件和支持pytest命令行方式執行。 ② pytest-base-url 是一個簡單的pytest插件&#xff0c;它通過命…