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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Redis主从复制(读写分离)

發布時間:2025/3/15 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis主从复制(读写分离) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、什么是主從復制

  • 主從復制,就是主機數據更新后根據配置和策略,自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主。
  • 優點:讀寫分離,性能擴展,容災快速恢復
  • 需要注意的時:在Redis2.6以后,slave只讀模式是默認開啟的,我們可以通過配置文件中的slave-read-only選項配置是否開啟只讀模式

    同時,從機下面也還能有自己的從機。

二、主從復制的方式

  • 當master服務器與slave服務器正常連接時,master服務器會發送數據命令流給slave服務器,將自身數據的改變復制到slave服務器。
  • 當因為各種原因master服務器與slave服務器斷開后,slave服務器在重新連上master服務器時會嘗試重新獲取斷開后未同步的數據即部分同步,或者稱為部分復制
  • 如果無法部分同步(比如初次同步),則會請求進行全量同步,這時master服務器會將自己的rdb文件發送給slave服務器進行數據同步,并記錄同步期間的其他寫入,再發送給slave服務器,以達到完全同步的目的,這種方式稱為全量復制。
  • 三、主從復制工作原理

    • 工作原理:
      master服務器會記錄一個replicationId的偽隨機字符串,用于標識當前的數據集版本,還會記錄一個當數據集的偏移量offset,不管master是否有配置slave服務器,replication Id和offset會一直記錄并成對存在,我們可以通過以下命令查看replication Id和offset:
    > info repliaction

    當master與slave正常連接時,slave使用PSYNC命令向master發送自己記錄的舊master的replication id和offset,而master會計算與slave之間的數據偏移量,并將緩沖區中的偏移數量同步到slave,此時master和slave的數據一致。而如果slave引用的replication太舊了,master與slave之間的數據差異太大,則master與slave之間會使用全量復制的進行數據同步。之后每次主機的寫操作,都會立刻發送給從機,從機執行相同的命令。

    四、配置主從復制(兩種方式)

    假設主機地址:192.168.0.101

  • 客戶端發送同步命令
  • # 向客戶端 saveof 192.168.1.101 6379
  • slave服務器配置主服務器
    在這里slave服務器的redis.conf文件通過saveof選項,可以指定master服務器:
  • slaveof 192.168.1.101 6379
  • 若master要求驗證
    上面配置的是master服務器沒有設置密碼的情況,如果master設置了密碼,則可以在連接到slave服務器的redis-cli執行下面的命令:
  • config set masterauth 密碼

    或者在slave服務器的redis.conf中配置下面的選項:

    masterauth 密碼

    五、避免slave被清空

    slave會被清空?slave不用同步了master的數據嗎?備份的數據怎么會清空了呢?
    當master服務器關閉了持久化時,如果發生故障后自動重啟時,由本地沒有保存持久化的數據,重啟的Redis內存數據為空,而slave會自動同步master的數據,這時候,slave服務器的數據也會被清空。
    如何避免slave被清空呢?

    如果條件允許(一般都可以的),master服務器還是要開啟持久化,這樣master故障重啟時,可以快速恢復數據,而同步這臺master的slave數據也不會被清空。
    如果master不能開啟持久化,則不應該設置讓master發生故障后重啟(有些機器會配置自動重啟),而是將某個slave服務器升級為master服務器,對外繼續提供服務。

    這就是后面會講的哨兵機制。

    六、主從復制中的key過期問題

    我們都知道Redis可以通過設置key的過期時間來限制key的生存時間,Redis處理key過期有惰性刪除和定期刪除兩種機制,而在配置主從復制后,slave服務器就沒有權限處理過期的key,這樣的話,對于在master上過期的key,在slave服務器就可能被讀取,所以master會累積過期的key,積累一定的量之后,發送del命令到slave,刪除slave上的key。
    如果slave服務器升級為master服務器 ,則它將開始獨立地計算key過期時間,而不需要通過master服務器的幫助。

    七、哨兵機制

  • 什么是哨兵機制

    完整的哨兵機制體系
  • 為什么會出現哨兵機制(主從復制的問題存在問題)
    當master節點發生故障時,需要手動進行故障轉移,寫能力與存儲能力受限,寫能力和存儲能力都依賴于master節點
  • 哨兵機制的主要功能
    Sentinel 的主要功能包括:主節點存活檢測、主從運行情況檢測、自動故障轉移 (failover)、主從切換。Redis 的 Sentinel 最小配置是 一主一從。
    Redis 的 Sentinel 系統可以用來管理多個 Redis 服務器,該系統可以執行以下四個任務:
  • 1.監控
    Sentinel 會不斷的檢查 主服務器 和 從服務器 是否正常運行。
    2.通知 當被監控的某個 Redis服務器出現問題,Sentinel 通過 API 腳本 向 管理員 或者其他的 應用程序 發送通知。
    3.自動故障轉移
    當主節點不能正常工作時,Sentinel會開始一次自動的故障轉移操作,它會將與失效主節點是主從關系的其中一個從節點 升級為新的主節點,并且將其他的 從節點 指向 新的主節點。
    4. 配置提供者
    在 Redis Sentinel 模式下,客戶端應用 在初始化時連接的是 Sentinel 節點集合,從中獲取主節點的信息。

  • 主觀下線和客觀下線
    默認情況下,每個 Sentinel 節點會以 每秒一次 的頻率對 Redis 節點和 其它 的 Sentinel 節點發送 PING 命令,并通過節點的 回復 來判斷節點是否在線。
  • 主觀下線

    主觀下線 適用于所有 主節點 和 從節點。如果在 down-after-milliseconds 毫秒內,Sentinel 沒有收到目標節點 的有效回復,則會判定 該節點 為 主觀下線。

    客觀下線

    客觀下線 只適用于 主節點。如果 主節點 出現故障,Sentinel 節點會通過 sentinel
    is-master-down-by-addr 命令,向其它 Sentinel 節點詢問對該節點的 狀態判斷。如果超過
    個數的節點判定 主節點 不可達,則該 Sentinel 節點會判斷 主節點 為 客觀下線。

  • 哨兵機制原理

    更詳細的哨兵機制介紹參考大佬文章
    本文參考文章
  • 總結

    以上是生活随笔為你收集整理的Redis主从复制(读写分离)的全部內容,希望文章能夠幫你解決所遇到的問題。

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