日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux redis客户端_你见过能把Redis的主从复制讲这么明白的吗?

發布時間:2023/12/3 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux redis客户端_你见过能把Redis的主从复制讲这么明白的吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概念

1.Conception(概念)

Redis的復制也就是我們所說的主從復制,主機數據更新后根據配置和策略,自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主。

2.Function(功能)

讀寫分離(秉持與RDBMS 相同的設計理念)

容災恢復

Redis的復制的實現

這里我們將具體說明并演示Redis的S-M Relication(鑒于各種原因我將在本地演示,不加入其他域的主機,但其主從復制的原理通過橫向對比即可應用于不同主機,這里不贅述)。

復制的實現

配置規則:配從(庫)不配主(庫)

從庫配置:slaveof 主庫IP 主庫端口,slaveof 192.168.123.100 6379 表明該主機將附從于IP地址為192.168.123.100 端口號為 6379 的Redis。

每次與master斷開之后,都需要重新連接,除非你配置進redis.conf文件.

使用 info replication 查看當前server的S-M關系。

修改配置文件細節操作

這里我們將詳細著重地講解如何在本地開啟S-M Relication,為了數據備份并達到演示的效果我將將之前Redis的安裝Root File轉移至其他文件夾 E:WorkSpaceIDEsRedis1。并且使用Linux OS Env.來演示。由于Windows OS Env不支持 daemonize 和 pid設置,因而無法在Windows OS上做演示,這也呼應了我之前說的Redis的發揮最優良的OS Env應是 Linux/Unix。

  • 拷貝多個redis.conf文件

這里我們將使用6379 6382 6381 三個端口來模擬S-M Replication。

  • 開啟daemonize yes

Windows:不支持

Linux:General 區域的 daemonize yes

  • pid文件名字

Windows:不支持

Linux:General 區域的

pidfile /var/run/redis79.pid(redis79.conf)

pidfile /var/run/redis80.pid(redis80.conf)

pidfile /var/run/redis81.pid(redis81.conf)

  • 指定端口

Windows / Linux: General 區域的

port 6379(redis79.conf)

port 6380(redis80.conf)

port 6381(redis81.conf)

  • log文件名字

Windows / Linux: General 區域的

logfile “6379.log”(redis79.conf)

logfile “6380.log”(redis80.conf)

logfile “6381.log”(redis81.conf)

  • dump.rdb名字

-Windows / Linux:SNAPSHOTTING 區域的

- dbfilename dump6379.rdb(redis79.conf)

- dbfilename dump6380.rdb(redis80.conf)

- dbfilename dump6381.rdb(redis81.conf)

最終配置好的3個客戶端如下圖所示:

配置好以后將6379設置為Master 6380/6381設置Slave,如下圖所示

注意點:

一旦S-M Replication形成 S將共享M 的所有數據。

S 只有讀的權限。

S-M 的數據同步存在一定延時。

  • Redis S-M中常用的3招

一主二仆

一個Master兩個Slave

日志查看

主機日志

備機日志

info replication(查看S-M Replication 關系)

主從問題

1 切入點問題?slave1、slave2是從頭開始復制還是從切入點開始復制?

答: 一旦S-M關系形成,S將享有M所有的數據即從頭開始復制M所有的數據。

2 從機是否可以寫?set可否?

答:從機只能讀,不能寫即不能set。

3 主機shutdown后情況如何?從機是上位還是原地待命

答:M宕機之后 從機將人原地待命并保留M所有的數據(M最近一次的數據保存可能會丟失)

4 主機又回來了后,主機新增記錄,從機還能否順利復制?

答:主機重新連接之后將與從機重新建立S-M Replication 關系,并且主機的新增記錄仍能同步至從機。

5 其中一臺從機down后情況如何?依照原有它能跟上大部隊嗎?

答:從機宕機之后,需要重新建立S-M Replication 關系(手動配置:slaveof IP PORT,配置配置:slaveof 192.168.123.100 6379),當重新與M 建立 S-M Replication之后 S 仍共享M 所有數據。

  • 薪火相傳

由上圖我們可以看出Redis 的S-M Replication具有傳遞行,即一個S即可以使SLAVE 也可以是一個MASTER。在做Redis集群是會涉及到這一理念。

  • 反客為主

Redis的S-M Replication中的一個SLAVE欲解除S-M關系時可以通過一下命令實現:

SLAVEOF no one: 使當前數據庫停止與其他數據庫的同步,轉成主數據庫

Redis 復制的原理

slave啟動成功連接到master后會發送一個sync命令。

Master接到命令啟動后臺的存盤進程,同時收集所有接收到的用于修改數據集命令,在后臺進程執行完畢之后,master將傳送整個數據文件到slave,以完成一次完全同步。

全量復制:而slave服務在接收到數據庫文件數據后,將其存盤并加載到內存中。

增量復制:Master繼續將新的所有收集到的修改命令依次傳給slave,完成同步。

但是只要是重新連接master,一次完全同步(全量復制)將被自動執行

Redis 講解系列之 Redis的主從復制(二)

本章節我們將學習一下Redis 的Sentinel(哨兵模式)主從復制機制。

Sentinel介紹

Sentinel是Redis的高可用性(HA)解決方案,由一個或多個Sentinel實例組成的Sentinel系統可以監視任意多個主服務器,以及這些主服務器屬下的所有從服務器,并在被監視的主服務器進行下線狀態時,自動將下線主服務器屬下的某個從服務器升級為新的主服務器,然后由新的主服務器代替已下線的主服務器繼續處理命令請求。Redis提供的sentinel(哨兵)機制,通過sentinel模式啟動redis后,自動監控master/slave的運行狀態,基本原理是:心跳機制+投票裁決

  • 監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正常。
  • 提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程序發送通知。
  • 自動故障遷移(Automatic failover): 當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主服務器的其中一個從服務器升級為新的主服務器, 并讓失效主服務器的其他從服務器改為復制新的主服務器; 當客戶端試圖連接失效的主服務器時, 集群也會向客戶端返回新主服務器的地址, 使得集群可以使用新主服務器代替失效服務器。

Sentinel的主從原理

  • 服務器與Sentinel系統
主服務器下線
  • 故障轉義(Sentinel機制選出新的Master)
原來的M從新進入S-M Replication將自動降級為 S之前介紹過為什么Jedis要用2.2.2及以上版本,因為主從實例地址(IP PORT)是不同的,當故障發生進行主從切換后,應用程序無法知道新地址,故在Jedis2.2.2中新增了對Sentinel的支持,應用通過 redis.clients.jedis.JedisSentinelPool.getResource()取得的Jedis實例會及時更新到新的主實例地址。

Redis Sentinel配置

  • S-M Replication2個哨兵,1個主redis,2個從redis的方式,配置文件如下:
  • 基本配置(列出的是具體修改的項,其他配置信息請保持不變)
    sentinel_63791.conf 配置
  • sentinel_63792.conf 配置
redis_master_6379.conf 配置
  • port 6379
  • daemonize yes
  • requirepass yingjun
  • masterauth yingjun
  • redis_slave_6380.conf 配置
  • port 6380
  • daemonize yes
  • requirepass yingjun
  • slaveof 192.168.78.99 6379
  • masterauth yingjun
  • redis_slave_6381.conf 配置
  • port 6381 daemonize yes
  • requirepass yingjun
  • slaveof 192.168.78.99 6379
  • masterauth yingjun
    • 執行
  • ./redis-server ../conf/redis_master_6379.conf
  • ./redis-server ../conf/redis_slave_6381.conf
  • ./redis-server ../conf/redis_slave_6382.conf
  • ./redis-sentinel ../conf/sentinel_63791.conf
  • ./redis-sentinel ../conf/sentinel_63792.conf12345
    • 檢查
    • 查看進程
    • 查看master的狀態
    • 查看slave的狀態
    查看sentinel的狀態接下來驗證redis sentinel的主從切換首先關閉主redis(6379)服務(shutdown)。查看哨兵,發現端口號為6380的從服務變成了主服務,sentinel自動完成了故障切換。啟動剛才被shutdown的6379服務并查看,發現它變成了從服務。

    Jedis Sentinel教程

    • Maven依賴
    • redis的配置文件
    • Spring的配置文件
    • 代碼中直接用redisTemplate調用

    總結

    以上是生活随笔為你收集整理的linux redis客户端_你见过能把Redis的主从复制讲这么明白的吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。