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/163837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163837.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163837.shtml

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

相關文章

學習Python和深度學習基礎

1. Python基礎知識 學習Python的基本語法、數據類型、控制流等基礎知識。掌握常用的Python庫,如NumPy和Pandas,它們在深度學習中經常被使用。 2. 深度學習基礎 了解深度學習的基本概念,包括神經網絡、前向傳播、反向傳播等。學習深度學習框…

Disasm 示例程序改寫和適配

Disasm 示例程序改寫和適配 簡介 用途 可用于反匯編x86的二進制匯編文件&#xff0c;展示出來內部的反匯編原理和流程。原由 最近在看<<C 反匯編與逆向分析技術揭秘>>這本書籍&#xff0c;在第一張的簡介中我們可以看到ProViem這個反匯編開源工具的內容&#x…

無線收發器芯片Si24R1 兼容替代NRF24L01

Si24R1是一款工作在2.4-2.5GHz世界通用ISM頻段的單片無線收發器芯片。無線收發器包括&#xff1a;頻率發生器、集成嵌入式ARQ基帶協議引擎、功率放大器、晶體振蕩器調制器、解調器。輸出功率頻道選擇和協議的設置可以通過SPI接口進行設置。是目前2.4G無線射頻芯片中&#xff0c…

Java 文件處理工具類詳解

在軟件開發中,文件處理是一個常見的任務,我們經常需要讀取、寫入和管理文件。為了更便捷地處理文件相關操作,我們編寫了一個 FileUtils 工具類,提供了一些有用的文件處理方法。 工具類介紹 FileUtils 工具類包含了一些常用的文件處理方法,主要功能如下: 獲取統一的文件…

Git本地庫操作

對本地庫的操作很少&#xff0c;我們學習1~6節即可&#xff0c;其他了解下。我們可以在idea中完成對本地庫還有遠程庫的操作&#xff0c;可視化界面用起來更加舒適而且也不會混淆。 1. Git概述 Git 是一個免費的、開源的分布式版本控制系統&#xff0c;可以快速高效地處理從小…

[個人筆記] Windows配置OpenSSH免密連接

Windows - 運維篇 第七章 Windows配置OpenSSH免密連接 Windows - 運維篇系列文章回顧Windows配置OpenSSH免密連接參考來源 系列文章回顧 第一章 遷移WinSrv系統到虛擬機 第二章 本地安全策略xcopy實現實時備份文件夾內容 第三章 利用cmd自帶的icacls命令導出文件的ACL權限 第四…

JavaScript啟動本地應用程序

JavaScript調起本地應用程序 以下內容&#xff0c;自定義部分我也還未經過實際驗證&#xff0c;酌情查看。 文章目錄 JavaScript調起本地應用程序確定協議調用協議傳參自定義寫入協議獲取參數 在瀏覽器中通過 JavaScript調起本地應用程序的一個可行方法就是 通過協議調起。 …

git 文件被莫名其妙的或略且無論如何都查不到哪個.gitignore文件忽略的

先說解決辦法&#xff1a;git check-ignore -v [文件路徑] 這個命令會返回一個忽略規則&#xff0c;以及該規則在哪個文件中定義的&#xff0c;該規則使得指定的文件被忽略。 1.遇到的問題 同項目組&#xff0c;其他同學都可以正常的提交.meta文件&#xff0c;我的提交就出現以…

Oracle通過MyBatis執行批量插入與更新問題

最近看一個老項目&#xff0c;使用的Oracle數據庫&#xff0c;發現要使用MyBatis執行批量操作還是不太一樣。 下面我們來看一下&#xff0c;Oracle數據庫&#xff0c;如何使用MyBatis來批量插入和更新。 批量插入 因為Oracle和MySQL的insert還不太一樣&#xff0c;Oracle不能…

canal本地安裝和使用

1、組件版本 canal.deployer-1.1.7 kafka_2.13-2.6.0 jdk8 apache-zookeeper-3.6.0-bin mysql5.7 2、解壓canal.deployer-1.1.7 2.1、修改canal.properties配置文件 ##改為kafka canal.serverModekafka## 改為instance canal.destinations instance## 改為true&#x…

STM32——獨立看門狗

文章目錄 一、看門狗基礎介紹&#xff08;一&#xff09;看門狗概述&#xff1a;&#xff08;二&#xff09;看門狗的作用&#xff1a;&#xff08;三&#xff09;看門狗的原理&#xff1a;&#xff08;四&#xff09;為什么需要使用看門狗來提高系統的可靠性&#xff1a;&…

Linux 中的 rm 命令及示例

Linux 中的 rm 命令及示例 rm命令是Linux中最常見、最基礎的命令之一。即使您對 Linux 的使用經驗有限&#xff0c;您也很可能聽說過它。該命令的主要目的是刪除文件和目錄。使用此命令刪除文件和目錄無法撤消。 這意味著您應該謹慎使用此命令&#xff0c;因為如果沒有備份&am…

振南技術干貨集:制冷設備大型IoT監測項目研發紀實(5)

注解目錄 1.制冷設備的監測迫在眉睫 1.1 冷食的利潤貢獻 1.2 冷設監測系統的困難 &#xff08;制冷設備對于便利店為何如何重要&#xff1f;了解一下你所不知道的便利店和新零售行業。關 于電力線載波通信的論戰。&#xff09; 2、電路設計 2.1 防護電路 2.1.1 強電防護…

Colmap三維重建詳解與使用方法

圖片捕獲過程&#xff0c;請遵循以下指導方針以獲得最佳重建結果: 1 捕捉具有良好紋理的圖像。避免使用完全沒有質感的圖片(例如&#xff0c;白色的墻或空桌子)。如果場景本身沒有足夠的紋理&#xff0c;你可以放置額外的背景對象&#xff0c;如海報等。 2 在相似的照明條件下…

@Value和@Scheduled注解簡介

&#xff08;1&#xff09;SpringBoot讀取配置文件&#xff0c;使用Value注解獲取數據&#xff0c;中文亂碼問題解決辦法 new String(xxx.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8) &#xff08;2&#xff09;Scheduled注解 例如&#xff0c;Scheduled(…

前端處理返回數據為數組對象且對象嵌套數組并重名的數據,合并名稱并疊加數據

前端處理返回數據為數組對象且對象嵌套數組并重名的數據&#xff0c;合并名稱并疊加數據 var newList[]; var table{}; var dataObj{}; var finalList[]; var tableData[{brName:營業部,dateStr:2023-11-23,tacheArr:[{dealCnt:20,tacheName:奔馳}]},{brName:營業部,dateStr:2…

TypeError: Cannot read property ‘sendpost‘ of undefined

箭頭函數指向問題&#xff0c;定義let that this 解決

大寬帶服務器有什么優勢?

大寬帶服務器有什么優勢&#xff1f; 什么是大帶寬服務器&#xff1f;從屬性上看&#xff0c;大寬帶可以分為G口大帶寬、萬兆大帶寬等&#xff0c;從線路上看&#xff0c;可以分為電信、移動、聯通等&#xff0c;從地域屬性看&#xff0c;可以分為國內寬帶、國際寬帶。大寬帶是…

如何活躍谷歌開發者賬號,增加賬號的權重和真實性,從而延長應用在線時長?

眾所周知&#xff0c;每個谷歌開發者賬號都有一個初始權重&#xff0c;而權重的高低會影響到賬號的穩定性和真實性&#xff0c;從而影響應用上架的成功率和應用在線時長。 關于提高谷歌賬號權重、活躍度及穩定性&#xff0c;以下的方法和建議可供參考&#xff1a; 1、社區活動…

外設——CAN總線收發器TJA1043

目錄 1. 引腳 2. 工作模式 3. 5種模式和7種狀態標識的理解和使用 1. 引腳 2. 工作模式 該收發器相較于普通收發器&#xff0c;引腳多了幾個&#xff0c;就是功能等多了。TJA1043支持五種操作模式&#xff0c;就是通過控制引腳STB_N和EN來原則。五種模式&#xff1a; 正常模式…