課程大綱
1、如何配置RDB持久化機制
2试溯、RDB持久化機制的工作流程
3蔑滓、基于RDB持久化機制的數(shù)據(jù)恢復(fù)實驗
------------------------------------------------------------------------
1、如何配置RDB持久化機制
redis.conf文件耍共,也就是/etc/redis/6379.conf烫饼,去配置持久化
save 60 1000
每隔60s,如果有超過1000個key發(fā)生了變更试读,那么就生成一個新的dump.rdb文件,就是當(dāng)前redis內(nèi)存中完整的數(shù)據(jù)快照荠耽,這個操作也被稱之為snapshotting钩骇,快照
也可以手動調(diào)用save或者bgsave命令,同步或異步執(zhí)行rdb快照生成
save可以設(shè)置多個铝量,就是多個snapshotting檢查點倘屹,每到一個檢查點,就會去check一下慢叨,是否有指定的key數(shù)量發(fā)生了變更纽匙,如果有,就生成一個新的dump.rdb文件
------------------------------------------------------------------------
2拍谐、RDB持久化機制的工作流程
(1)redis根據(jù)配置自己嘗試去生成rdb快照文件
(2)fork一個子進程出來
(3)子進程嘗試將數(shù)據(jù)dump到臨時的rdb快照文件中
(4)完成rdb快照文件的生成之后烛缔,就替換之前的舊的快照文件
dump.rdb,每次生成一個新的快照轩拨,都會覆蓋之前的老快照
------------------------------------------------------------------------
3践瓷、基于RDB持久化機制的數(shù)據(jù)恢復(fù)實驗
(1)在redis中保存幾條數(shù)據(jù),立即停掉redis進程亡蓉,然后重啟redis晕翠,看看剛才插入的數(shù)據(jù)還在不在
數(shù)據(jù)還在,為什么砍濒?
帶出來一個知識點淋肾,通過redis-cli SHUTDOWN這種方式去停掉redis硫麻,其實是一種安全退出的模式,redis在退出的時候會將內(nèi)存中的數(shù)據(jù)立即生成一份完整的rdb快照
/var/redis/6379/dump.rdb
(2)在redis中再保存幾條新的數(shù)據(jù)樊卓,用kill -9粗暴殺死redis進程拿愧,模擬redis故障異常退出,導(dǎo)致內(nèi)存數(shù)據(jù)丟失的場景
這次就發(fā)現(xiàn)简识,redis進程異常被殺掉赶掖,數(shù)據(jù)沒有進dump文件,幾條最新的數(shù)據(jù)就丟失了
(2)手動設(shè)置一個save檢查點七扰,save 5 1
(3)寫入幾條數(shù)據(jù)奢赂,等待5秒鐘,會發(fā)現(xiàn)自動進行了一次dump rdb快照颈走,在dump.rdb中發(fā)現(xiàn)了數(shù)據(jù)
(4)異常停掉redis進程膳灶,再重新啟動redis,看剛才插入的數(shù)據(jù)還在
rdb的手動配置檢查點立由,以及rdb快照的生成轧钓,包括數(shù)據(jù)的丟失和恢復(fù),全都演示過了