課程大綱
1、如何配置RDB持久化機制
2、RDB持久化機制的工作流程
3、基于RDB持久化機制的數(shù)據(jù)恢復(fù)實驗
1、如何配置RDB持久化機制
1.vi /etc/redis/6379.conf
2.配置redis生成dump快照文件時間點
save 60 1000
3.每隔60s,如果有超過1000個key發(fā)生了變更,那么就生成一個新的dump.rdb文件,就是當(dāng)前redis內(nèi)存中完整的數(shù)據(jù)快照,這個操作也被稱之為snapshotting-快照
4.也可以手動調(diào)用save或者bgsave命令,同步或異步執(zhí)行rdb快照生成
5.save可以設(shè)置多個,就是多個snapshotting檢查點,每到一個檢查點,就會去check一下,是否有指定的key數(shù)量發(fā)生了變更,如果有,就生成一個新的dump.rdb文件
2、RDB持久化機制的工作流程
1、redis根據(jù)配置自己嘗試去生成rdb快照文件
2、fork一個子進(jìn)程出來
3、子進(jìn)程嘗試將數(shù)據(jù)dump到臨時的rdb快照文件中
4、完成rdb快照文件的生成之后,就替換之前的舊的快照文件
dump.rdb,每次生成一個新的快照,都會覆蓋之前的老快照
3、基于RDB持久化機制的數(shù)據(jù)恢復(fù)實驗
1.在redis中保存幾條數(shù)據(jù)
1.1 6379.conf中rdb保存內(nèi)存數(shù)據(jù)的檢查點配置
image.png
1.2 redis-cli -h 192.168.2.115 -p 6379 打開redis操作終端連接redis server, 進(jìn)行set操作
image.png
2.立即停掉redis進(jìn)程(采用redis-cli 安全shutdown模式,柔性殺死進(jìn)程方式)
立即停掉redis進(jìn)程,然后重啟redis,看看剛才插入的數(shù)據(jù)還在不在
2.1 redis-cli -h 192.168.2.115 -p 6379 shutdown 柔性停掉redis服務(wù)進(jìn)程
image.png
2.2 重啟redis 進(jìn)程
cd /etc/init.d/
./redis_6379 start
redis-cli -h 192.168.2.115 -p 6379 打開redis操作終端連接redis server
get liutao
image.png
3.(小插曲)為什么按照2操作后,數(shù)據(jù)還在?
帶出來一個知識點,通過redis-cli SHUTDOWN這種方式去停掉redis,其實是一種安全退出的模式,redis在退出的時候會將內(nèi)存中的數(shù)據(jù)立即生成一份完整的rdb快照 /var/redis/6379/dump.rdb,這就是為什么明顯redis server 還沒有到達(dá)快照檢查生成時刻的時候,殺死redis-server進(jìn)程,本以為dump文件沒有生成,剛剛寫入redis的數(shù)據(jù)會丟失,但是沒丟失的原因。
4.立刻停掉redis進(jìn)程(暴力殺死進(jìn)程方式)
在redis中再保存幾條新的數(shù)據(jù),用kill -9 粗暴殺死redis進(jìn)程,模擬redis故障異常退出,導(dǎo)致內(nèi)存數(shù)據(jù)丟失的場景。
`注意:`如果redis.conf中appendonly:yes,則表示開啟了AOF持久化模式,那么一定將其關(guān)閉。
操作過程如下圖所示:
image.png
cat生成的dump文件-
cat /var/redis/6379/dump.rdb
,數(shù)據(jù)如下圖所示:image.png
這次就發(fā)現(xiàn),redis進(jìn)程異常被殺掉,數(shù)據(jù)沒有進(jìn)dump文件,幾條最新的數(shù)據(jù)就丟失了
5.修改/etc/redis/6379.conf,手動設(shè)置一個save檢查點,save 5 1。
image.png
6.寫入幾條數(shù)據(jù),等待5秒鐘,會發(fā)現(xiàn)自動進(jìn)行了一次dump
image.png
cat生成的dump文件-
cat /var/redis/6379/dump.rdb
,數(shù)據(jù)如下圖所示:image.png
1.rdb快照,在dump.rdb中發(fā)現(xiàn)了數(shù)據(jù)。
2.異常停掉redis進(jìn)程,再重新啟動redis,看剛才插入的數(shù)據(jù)還在
總結(jié)
至此:
rdb的手動配置檢查點,以及rdb快照的生成,包括數(shù)據(jù)的丟失和恢復(fù),全都演示過了
個人博客:http://www.markfork.com
個人簡書:http://www.lxweimin.com/u/c169fce5179b
慕課網(wǎng):https://www.imooc.com/u/2150709/articles