redis 持久化和主從複製

2022-10-08 22:36:22 字數 3052 閱讀 7120

redis 提供了2個不同形式的持久化方式。

rdb是什麼

在指定的時間間隔內將記憶體中的資料集快照寫入磁碟, 也就是行話講的snapshot快照,它恢復時是將快照檔案直接讀到記憶體裡

redis會單獨建立(fork)乙個子程序來進行持久化,會先將資料寫入到 乙個臨時檔案中,待持久化過程都結束了,再用這個臨時檔案替換上次持久化好的檔案。 整個過程中,主程序是不進行任何io操作的,這就確保了極高的效能 如果需要進行大規模資料的恢復,且對於資料恢復的完整性不是非常敏感,那rdb方式要比aof方式更加的高效。rdb的缺點是最後一次持久化後的資料可能丟失

rdb的優勢

rdb的劣勢

redis備份

先通過config get dir 查詢rdb檔案的目錄

將*.rdb的檔案拷貝到別的地方

rdb的恢復

日誌的形式來記錄每個寫操作(增量儲存),將redis執行過的所有寫指令記錄下來(讀操作不記錄),只許追加檔案但不可以改寫檔案,redis啟動之初會讀取該檔案重新構建資料,換言之,redis 重啟的話就根據日誌檔案的內容將寫指令從前到後執行一次以完成資料的恢復工作

aof檔案的儲存路徑,同rdb的路徑一致。

aof和rdb同時開啟,系統預設取aof的資料(資料不會存在丟失)

cd usr/local/bin/redis/
aof持久化流程aof緩衝區根據aof持久化策略[always,everysec,no]將操作sync同步到磁碟的aof檔案中;

aof檔案大小超過重寫策略或手動重寫時,會對aof檔案rewrite重寫,壓縮aof檔案容量;

例如:檔案達到70mb開始重寫,降到50mb,下次什麼時候開始重寫?100mb

系統載入時或者上次重寫完畢時,redis會記錄此時aof大小,設為base_size,

如果redis的aof當前大小》= base_size +base_size*100% (預設)且當前大小》=64mb(預設)的情況下,redis會對aof進行重寫。

優勢:

劣勢:

官方推薦兩個都啟用。

如果對資料不敏感,可以菜單獨用rdb。

不建議單獨用 aof,因為可能會出現bug。

如果只是做純記憶體快取,可以都不用。

主機資料更新後根據配置和策略, 自動同步到備機的master/sl**er機制,master以寫為主,sl**e以讀為主

操作

進入redis可以使用命令檢視當前主機狀態

在從機上使用命令

將6380和6381變為從機。此時的主機狀態:

主機寫,從機讀。不能使用從機進行寫的操作!

(error) readonly you can't write against a read only replica.
shutdowd問題

從伺服器仍然是從伺服器,並且知道主服務掛掉。當主伺服器重新連線,主伺服器仍然可以檢視到兩個從伺服器

從伺服器重新連線後變為主伺服器,當從伺服器重新變為主伺服器期間,如果主伺服器想資料庫從存值,從伺服器也能獲取。

原理:

使用一種鏈的結構:主——從——從。

缺點:中間的從機掛掉,就可能會直接癱瘓。

當主機掛掉,選擇其中的乙個從機成為主機。

使用命令

sl**eof no one
缺點:仍然需要手動的進行操作。

哨兵模式是反客為主模式的增強版。當主機掛掉後,哨兵會監測到,然後哨兵就行選舉,選舉乙個從機成為新的主機。老的主機重新連線後,會變為新主機的從機。

cd /myredis/

vi sentinel.conf

sentinel monitor mymaster 127.0.0.1 6379 1

# 其中mymaster為監控物件起的伺服器名稱, 1 為至少有多少個哨兵同意遷移的數量。

redis-sentinel  /myredis/sentinel.conf
選舉的規則

選擇優先順序靠前的從機

在redis.conf中有乙個叫做replica-priority的字段控制著優先順序,數字越小,優先順序越高

選擇偏移量最大的從機

哪乙個從機和主機的資料最接近,就選擇誰

選擇runid最小的從機

每個redis例項啟動後都會隨機生成乙個40位的runid

redis的持久化及主從複製

一 持久化 1 rdb redis中預設的方式 就是在不同的時間點,將redis儲存的資料生成快照並儲存到磁碟等介質上。redis在進行資料持久化的過程中,會先將資料寫入到乙個臨時檔案,待持久化過程都結束了,才會用這個臨時檔案替換上次持久化好的檔案。2 aof 就是將redis執行過的所有寫指令記錄...

Mysql主從複製和Redis主從複製的區別

這是學習的時候自己總結的筆記,因為使用typora記筆記,導致太多的筆記分散,所以傳到部落格方便查詢,代表的是typora裡的高亮 mysql主從複製和redis主從複製的區別 複製時機 mysql的主從複製是 從接入點開始 主機之前的資料,從機不會複製 但是redis是 從頭開始備份 主機之前的資...

Redis 主從複製

主從複製的開啟,完全是在從節點發起的,不需要我們在主節點做任何事情,從節點開啟主從複製,有3種方式 主從複製主要可分為 連線建立階段 即準備階段 資料同步階段 命令傳播階段 主要作用是在主從節點之間建立連線,為資料同步做好準備 從節點資料的初始化,具體執行的方式是 從節點向主節點傳送psync命令 ...