課程大綱
1腻贰、如何配置RDB持久化機(jī)制
2叹侄、RDB持久化機(jī)制的工作流程
3巩搏、基于RDB持久化機(jī)制的數(shù)據(jù)恢復(fù)實(shí)驗(yàn)
1、如何配置RDB持久化機(jī)制
1.vi /etc/redis/6379.conf
2.配置redis生成dump快照文件時(shí)間點(diǎn)
save 60 1000
3.每隔60s趾代,如果有超過1000個(gè)key發(fā)生了變更贯底,那么就生成一個(gè)新的dump.rdb文件,就是當(dāng)前redis內(nèi)存中完整的數(shù)據(jù)快照撒强,這個(gè)操作也被稱之為snapshotting-快照
4.也可以手動(dòng)調(diào)用save或者bgsave命令禽捆,同步或異步執(zhí)行rdb快照生成
5.save可以設(shè)置多個(gè),就是多個(gè)snapshotting檢查點(diǎn)飘哨,每到一個(gè)檢查點(diǎn)胚想,就會(huì)去check一下,是否有指定的key數(shù)量發(fā)生了變更芽隆,如果有浊服,就生成一個(gè)新的dump.rdb文件
2、RDB持久化機(jī)制的工作流程
1胚吁、redis根據(jù)配置自己嘗試去生成rdb快照文件
2牙躺、fork一個(gè)子進(jìn)程出來(lái)
3、子進(jìn)程嘗試將數(shù)據(jù)dump到臨時(shí)的rdb快照文件中
4腕扶、完成rdb快照文件的生成之后述呐,就替換之前的舊的快照文件
dump.rdb,每次生成一個(gè)新的快照蕉毯,都會(huì)覆蓋之前的老快照
3乓搬、基于RDB持久化機(jī)制的數(shù)據(jù)恢復(fù)實(shí)驗(yàn)
1.在redis中保存幾條數(shù)據(jù)
1.1 6379.conf中rdb保存內(nèi)存數(shù)據(jù)的檢查點(diǎn)配置
1.2 redis-cli -h 192.168.2.115 -p 6379 打開redis操作終端連接redis server, 進(jìn)行set操作
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)程
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
3.(小插曲)為什么按照2操作后进肯,數(shù)據(jù)還在?
帶出來(lái)一個(gè)知識(shí)點(diǎn)棉磨,通過redis-cli SHUTDOWN這種方式去停掉redis江掩,其實(shí)是一種安全退出的模式,redis在退出的時(shí)候會(huì)將內(nèi)存中的數(shù)據(jù)立即生成一份完整的rdb快照 /var/redis/6379/dump.rdb乘瓤,這就是為什么明顯redis server 還沒有到達(dá)快照檢查生成時(shí)刻的時(shí)候环形,殺死redis-server進(jìn)程,本以為dump文件沒有生成衙傀,剛剛寫入redis的數(shù)據(jù)會(huì)丟失抬吟,但是沒丟失的原因。
4.立刻停掉redis進(jìn)程(暴力殺死進(jìn)程方式)
在redis中再保存幾條新的數(shù)據(jù)统抬,用kill -9 粗暴殺死redis進(jìn)程火本,模擬redis故障異常退出危队,導(dǎo)致內(nèi)存數(shù)據(jù)丟失的場(chǎng)景。
`注意:`如果redis.conf中appendonly:yes钙畔,則表示開啟了AOF持久化模式茫陆,那么一定將其關(guān)閉。
操作過程如下圖所示:
cat生成的dump文件-
cat /var/redis/6379/dump.rdb
,數(shù)據(jù)如下圖所示:這次就發(fā)現(xiàn)擎析,redis進(jìn)程異常被殺掉簿盅,數(shù)據(jù)沒有進(jìn)dump文件,幾條最新的數(shù)據(jù)就丟失了
5.修改/etc/redis/6379.conf,手動(dòng)設(shè)置一個(gè)save檢查點(diǎn)揍魂,save 5 1挪鹏。
6.寫入幾條數(shù)據(jù),等待5秒鐘愉烙,會(huì)發(fā)現(xiàn)自動(dòng)進(jìn)行了一次dump
cat生成的dump文件-
cat /var/redis/6379/dump.rdb
,數(shù)據(jù)如下圖所示:1.rdb快照讨盒,在dump.rdb中發(fā)現(xiàn)了數(shù)據(jù)。
2.異常停掉redis進(jìn)程步责,再重新啟動(dòng)redis返顺,看剛才插入的數(shù)據(jù)還在
總結(jié)
至此:
rdb的手動(dòng)配置檢查點(diǎn),以及rdb快照的生成蔓肯,包括數(shù)據(jù)的丟失和恢復(fù)遂鹊,全都演示過了
個(gè)人博客:http://www.markfork.com
個(gè)人簡(jiǎn)書:http://www.reibang.com/u/c169fce5179b
慕課網(wǎng):https://www.imooc.com/u/2150709/articles