Redis持久化-RDB

來源:互聯網
上載者:User

標籤:相同   阻塞   選項   連結   資料庫   redis設定檔   頁面   替換   配置   

Redis持久化-RDB

Redis的持久化分為RDB持久化和AOF持久化,本篇文章主要說RDB持久化相關的東西。

RDB持久化就是把當前redis資料庫中的資料儲存到硬碟的過程。

觸發時機

RDB持久化的觸發方式有兩種,第一種是手動觸發,另外一種是自動觸發。

手動觸發

手動觸發RBD主要使用savebgsave命令。其實bgsave是對save命令阻塞問題的最佳化,因此你應該總是使用bgsave命令。

save

save命令會阻塞當前主進程,直到RDB持久化過程執行完畢,對於記憶體比較大的執行個體會造成非常長時間的阻塞,因此線上環境不要使用。

bgsave

bgsave命令執行時,redis主進程會fork出子進程,具體的RDB的過程是由子進程來完成的,在持久化期間,主進程依然響應來自應用程式的命令。阻塞僅僅會發生在fork出子進程的階段。

自動觸發redis設定檔中使用了save配置

如果在redis設定檔中使用了save m n (表示m秒內進行了n次資料修改)配置,滿足情況的時候會觸發bgsave

redis叢集中從節點執行全量複製操作

從節點執行全量複製操作的時候,主節點會自動觸發bgsave命令生存rdb檔案並發送給從節點

執行debug reload載入redis

在執行debug reload(這個時候redis執行個體的run id不會發生變化)重新載入redis的時候,也會自動觸發bgsave

預設情況下執行shutdown命令

預設情況下執行shutdown命令,如果沒有開啟AOF持久化功能,就會自動執行bgsave。

bgsave觸發RBD的執行過程

( TODO 後續補充流程圖)

  • 主進程執行bgsave命令,首先會檢查當前是否存在正在啟動並執行子進程,如果存在的話,bgsave命令就會直接退出。
  • 上述條件滿足的情況下,主進程會fork出子進程,在fork操作期間,主進程會短暫的阻塞,可以使用info stats命令的latest_fork_usec選項查看最近一次fork操作所耗費的時間,單位是微秒
  • 父進程fork完成以後,會繼續響應來自其他應用程式員的命令(但是save,bgsave,bgrewriteaof這三個命令特殊一些,會有不同的回應程式式)
  • 子進程建立RDB檔案,由於os的寫時複製機制(copy on write)父子進程會共用相同的物理頁面,當父進程處理寫請求時os會為父進程要修改的頁面棄置站台,而不是寫共用的頁面。所以子進程的地址空間內的數 據是fork時刻整個資料庫的一個快照。.
  • 當子進程將快照寫入臨時檔案完畢後,用臨時檔案替換原來的快照檔案,並發送訊號通知父進程RDB持久化過程完成
  • 父進程收到通知,更新相關的持久化資訊
RDB持久化的優缺點優點
  • 非常適合備份,全量複製等情境
  • redis載入RBD恢複資料會比使用AOF方式恢複的快
缺點
  • 沒辦法做到即時/准即時的持久化
  • 因為RDB檔案是一個壓縮過的二進位檔案,在redis的版本演化過程中,存在多個格式的RDB格式,因此存在老版本的redis不能完全相容新版RDB格式的情況

  

                                                   原文連結:https://wenchao.ren/archives/165

Redis持久化-RDB

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.