溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

AOF數(shù)據(jù)持久化(理論)

發(fā)布時(shí)間:2020-04-09 05:50:34 來(lái)源:網(wǎng)絡(luò) 閱讀:823 作者:張德帥ya 欄目:數(shù)據(jù)庫(kù)

持久化原理:

? ? ? ?AOF<二進(jìn)制文件>比RDB方式有更好的持久性。

? ? ? ?redis會(huì)將每一個(gè)收到的寫命令都通過(guò)write函數(shù)追加到文件最后,類似msyql的binlog。

? ? ? ?當(dāng)redis重啟時(shí),會(huì)通過(guò)重新執(zhí)行文件中保存的寫命令來(lái)在內(nèi)存中重建整個(gè)數(shù)據(jù)庫(kù)的內(nèi)容。

? ? ? ? ?

優(yōu)點(diǎn):可以保持更高的數(shù)據(jù)完整性。

? ? ? ? ? ? 如果設(shè)置追加file的時(shí)間是1s,那么redis發(fā)生故障,最多會(huì)丟失1s的數(shù)據(jù);

? ? ? ? ? ? 如果日志寫入不完整,支持redis-check-aof來(lái)進(jìn)行日志修復(fù);

? ? ? ? ? ? AOF文件沒(méi)被rewrite之前(文件過(guò)大時(shí)會(huì)對(duì)命令進(jìn)行合并重寫),

? ? ? ? ? ? 可以刪除其中的某些命令(比如誤操作的flushall)。

缺點(diǎn):AOF文件比RDB文件大,且恢復(fù)速度慢。?

? ?

? ?AOF默認(rèn)關(guān)閉。

? ?

配置文件相關(guān)參數(shù):

? ? ? ? ? ? appendonly yes

? ? ? ? ? ? appendfilename "" ? ? #AOF保存的文件名

? ? ? ? ? ??

同步方式相關(guān)的配置:

? ? ? ? ? ? appendfsync always ? ?#一旦插入命令,立即同步到磁盤,完全的持久化,但是速度慢,不推薦

? ? ? ? ? ? appendfsync everysec ? ? ? ?#AOF每秒進(jìn)行同步

? ? ? ? ? ? appendfsync no ? ? ? ? #不自動(dòng)同步,性能最好,但是持久化沒(méi)有保證

? ? ? ? ? ??

存儲(chǔ)過(guò)程:

? ? ? ? ?將快照內(nèi)容以命令的形式追加到AOF文件中,

? ? ? ? ?所以隨著追加,AOF文件會(huì)越來(lái)越大,保存的AOF文件存儲(chǔ)了執(zhí)行的所有命令,

? ? ? ? ?所以可以進(jìn)行修改文件來(lái)撤銷輸錯(cuò)的命令(在重寫之前,如果重寫了就沒(méi)有辦法了)?

? ? ? ? ?

對(duì)AOF文件進(jìn)行重寫:(解決AOF文件越來(lái)越大的問(wèn)題)

? ? ? ? ?redis-cli -h ip -p port bgrewriteaof

? ? ? ? ?

重寫命令的操作過(guò)程:

? ? ? ? ?在當(dāng)前的快照保存結(jié)束后,開啟一個(gè)子進(jìn)程,將AOF文件進(jìn)行重寫,

? ? ? ? ?合并set命令等操作到一個(gè)臨時(shí)文件,達(dá)到縮小文件大小的目的。

? ? ? ? ?重寫結(jié)束后,將臨時(shí)文件替換為新的AOF文件。

? ? ? ? ?(重寫過(guò)程中如果有新的redis操作命令,會(huì)提交到緩存中,重寫結(jié)束后追加到AOF文件內(nèi))?

? ? ? ? ?

? ? ? ? ?說(shuō)明:redis2.4以上版本,重寫機(jī)制自動(dòng)觸發(fā)。觸發(fā)的相關(guān)redis.conf配置如下:

? ? ? ? ?auto-aof-rewrite-percentage 100

? ? ? ? ?當(dāng)目前的AOF文件大小超過(guò)上一次重寫文件大小的百分之幾時(shí)進(jìn)行重寫,

? ? ? ? ?如果沒(méi)有重啟過(guò),則以啟動(dòng)時(shí)的AOF文件大小為依據(jù))

? ? ? ? ?auto-aof-rewrite-min-size 64mb(允許重寫的最小AOF文件大小);

? ? ? ? ?

數(shù)據(jù)恢復(fù):

? ? ? ? 重啟redis服務(wù),前提是配置文件必須設(shè)置了appendonly yes,然后會(huì)從appendfile的文件加載文件。

? ? ? ? 反之是從RDB中加載數(shù)據(jù)的。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI