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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

redis数据丢失_有效避免数据丢失!Redis持久化方案选择详解

發(fā)布時間:2024/7/23 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis数据丢失_有效避免数据丢失!Redis持久化方案选择详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么需要持久化呢?

通常情況下redis的數(shù)據(jù)全部存儲在內(nèi)存中,數(shù)據(jù)庫一旦故障發(fā)生重啟數(shù)據(jù)會全部丟失,即使是在redis cluster或者redis sentinel模式下主從同步數(shù)據(jù)的恢復(fù)仍然需要一段時間。

持久化功能在于能夠有效地避免因進程退出造成的數(shù)據(jù)丟失問題,在下次重啟時利用之前持久化的文件即可實現(xiàn)數(shù)據(jù)恢復(fù)。

開啟Redis持久化之后,數(shù)據(jù)將存放到磁盤中,數(shù)據(jù)庫執(zhí)行增量同步的時間要遠小于全量同步。在生產(chǎn)環(huán)境下故障的數(shù)據(jù)恢復(fù)有著非常重要的作用!

Redis數(shù)據(jù)持久化有兩種方案

Redis持久化有兩種方案:

  • RDB和AOF。RDB是一種快照式的數(shù)據(jù)存儲,它會周期性的保存當(dāng)前時間點Redis所有的數(shù)據(jù)到磁盤中。
  • AOF是一種追加式的存儲方式,會實時的記錄Redis的寫操作到磁盤中。

這兩種方案又存在什么樣的區(qū)別呢?下面讓小編一一道來吧~

RDB持久化

當(dāng)Redis的寫入觸發(fā)RDB持久化條件后(也可以手動執(zhí)行dgsave命令來觸發(fā)),Redis主進程fork一個子進程來創(chuàng)建臨時RDB存儲文件,創(chuàng)建文件完成后對這個臨時文件rename替換原先的RDB文件。RDB文件是一個單文件很適合數(shù)據(jù)的容災(zāi)備份與恢復(fù),通過RDB文件恢復(fù)數(shù)據(jù)庫耗時較短,通常1G的快照文件載入內(nèi)存只需20s左右。

缺點:

1)RDB持久化只會周期性的保存Redis數(shù)據(jù),當(dāng)還未觸發(fā)下一次存儲的情況下Redis宕機,則內(nèi)存中的數(shù)據(jù)會全部丟失。

2)另外當(dāng)數(shù)據(jù)量較大的情況下,fork子進程這個操作很消耗cpu,如下圖的監(jiān)控圖,每1800s觸發(fā)的RDB持久化,Redis消耗的cpu都會飆升。在fork子進程過程中可能會發(fā)生長達秒級別的阻塞情況。

參數(shù):

save選項如果配置為空save "",則關(guān)閉RDB持久化,這個開啟RDB持久化觸發(fā)條件可以配置多條,例如900秒內(nèi)有1次寫入觸發(fā)快照/300秒內(nèi)有10次寫入觸發(fā)快照,這個可以根據(jù)自身Redis寫入情況自由配置來平衡性能與數(shù)據(jù)安全。

stop-writes-on-bgsave-error建議開啟,當(dāng)redis bgsave發(fā)生錯誤的時候拒絕客戶端的請求,bgsave失敗一般是磁盤或者內(nèi)存空間不夠,需要監(jiān)控來提高數(shù)據(jù)安全性。

AOF持久化

AOF是通過保存Redis寫操作的命令來實現(xiàn)持久化,使用AOF來持久化,Redis數(shù)據(jù)的安全性將大幅提高,異常宕機情況下最多丟失1s的數(shù)據(jù)。AOF文件記錄了redis的寫操作,格式清晰,易于理解和修改,利于數(shù)據(jù)的重建。

缺點:

1)隨著redis寫入的增加,AOF存儲文件會越來越大,會影響到數(shù)據(jù)庫數(shù)據(jù)的恢復(fù)時間和磁盤空間等,所以我們需要配置AOF重寫來縮小AOF文件的體積,這里可使用默認的兩個觸發(fā)條件配置或者我們可以手動調(diào)用BGREWRITEAOF命令來觸發(fā)。

參數(shù):

appendonly設(shè)置是否開啟AOF持久化。

appendfsync有三種持久化模式:always/everysec/no,兼顧數(shù)據(jù)存儲的速度和安全性配置為everysec,每秒鐘同步一次數(shù)據(jù)到磁盤中。

RDB、AOF持久化優(yōu)劣勢對比

兩種方式各有千秋, 下面對比一下兩種redis數(shù)據(jù)持久化方式:

選擇

Redis恢復(fù)數(shù)據(jù)時會先檢查AOF文件是否存在,如果不存在就嘗試加載RDB文件。

在實際生產(chǎn)環(huán)境中,根據(jù)數(shù)據(jù)量、應(yīng)用對數(shù)據(jù)的安全要求、預(yù)算限制等不同情況,會有各種各樣的持久化策略。如完全不使用任何持久化、使用RDB或AOF的一種,或同時開啟RDB和AOF持久化等。

PS:持久化的選擇必須與Redis的主從策略一起考慮,因為主從復(fù)制與持久化同樣具有數(shù)據(jù)備份的功能,而且主機master和從機slave可以獨立的選擇持久化方案。

總結(jié)

以上是生活随笔為你收集整理的redis数据丢失_有效避免数据丢失!Redis持久化方案选择详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。