redis所有數(shù)據(jù)都是保存在內(nèi)存中。下面講述三種備份方式:
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了滄縣免費(fèi)建站歡迎大家使用!
1.定期地通過異步方式保存到磁盤上,該方式稱為半持久化模式。
1)半持久化RDB模式也是Redis備份默認(rèn)方式,是通過快照完成的,當(dāng)滿足redis.conf配置文件中設(shè)置的相關(guān)條件時(shí),Redis會(huì)自動(dòng)將內(nèi)存中的所有數(shù)據(jù)進(jìn)行快照并存儲(chǔ)在硬盤上,完成數(shù)據(jù)備份。
2)RDB快照的條件由用戶在redis.conf配置文件中自定義,由時(shí)間和改動(dòng)的關(guān)鍵字?jǐn)?shù)來確定,當(dāng)在指定的時(shí)間內(nèi)被更改的鍵的個(gè)數(shù)大于指定的數(shù)值時(shí)就會(huì)時(shí)進(jìn)行快照。以下是預(yù)置的3個(gè)條件,只要滿足其中一個(gè)條件,就會(huì)進(jìn)行快照。
save 900 1 #刷新快照到硬盤中,必須滿足兩者要求才會(huì)觸發(fā),即900秒之后至少1個(gè)關(guān)鍵字發(fā)生變化。
save 300 10 #必須是300秒之后至少10個(gè)關(guān)鍵字發(fā)生變化。
save 60 10000 #必須是60秒之后至少10000個(gè)關(guān)鍵字發(fā)生變化。
3)如果禁用自動(dòng)快照,將所有save參數(shù)刪除或注釋即可。
4)獲取redis數(shù)據(jù)保存的路徑:
127.0.0.1:6379> config get dir
"dir"
"/usr/local/redis/bin"
5)建議修改數(shù)據(jù)保存路徑: # vim redis.conf?
dir ./?#默認(rèn)所在安裝的目錄
dir /data/redis??#修改成新的路徑
操作技能:要先創(chuàng)建好保存路徑,配置文件才會(huì)生效,否則會(huì)宕掉redis服務(wù)
[root@redis_master /]# mkdir -p /data/redis?
6)測(cè)試修改數(shù)據(jù)存放效果
127.0.0.1:6379> config get dir
?"dir"
"/data/redis"
7)RDB方式實(shí)現(xiàn)持久化,一旦Redis異常退出,就會(huì)丟失最后次快照以后更改的所有數(shù)據(jù)。
2.全持久化AOF模式
1)如果數(shù)據(jù)很重要,不能損失任數(shù)據(jù),可以考慮使用AOF方式進(jìn)行持久化,默認(rèn)Redis沒有開啟AOF方式的全持久化模式。
2)允許同時(shí)開啟AOF和RDB,即保證了數(shù)據(jù)安全又使得進(jìn)行備份等操作十分容易。
3)參數(shù)配置詳解:
appendonly yes #開啟AOF持久化功能
appendifilename appendonly.aof #保存文件名
appendfsync always #每次執(zhí)行寫入都會(huì)執(zhí)行同步,最安全也最慢
auto-aof-rewirte-percentage 100 #參數(shù)的意義時(shí)當(dāng)目前的AOF文件大小超過上一次AOF重寫時(shí)的文件大小的百分之多少時(shí)會(huì)再次進(jìn)行重寫,如果之前沒有重寫過,則以啟動(dòng)時(shí)的AOF文件大小為依據(jù)。
auto-aof-rewrite-min-size 64MB #限制允許重寫的AOF文件最小的大小。
appendsync everysec? #每秒執(zhí)行一次同步操作。
appendsync no? #不主動(dòng)進(jìn)行同步操作,每30s一次,最快也不最安全。
3.Redis主從復(fù)制備份
1)通過持久化功能,保證了即使服務(wù)器重啟的情況下也不會(huì)損失或少量損失數(shù)據(jù)。但是由于數(shù)據(jù)是存儲(chǔ)在一臺(tái)服務(wù)器上的,如果這臺(tái)服務(wù)器的硬盤出現(xiàn)故障,也會(huì)導(dǎo)致數(shù)據(jù)丟失。
2)為了避免單點(diǎn)故障,將數(shù)據(jù)庫復(fù)制多個(gè)副本以部署在不同的服務(wù)器上,即使有一臺(tái)服務(wù)器出現(xiàn)故障其他服務(wù)器依然可以繼續(xù)提供服務(wù),這就要求當(dāng)一臺(tái)服務(wù)器上的數(shù)據(jù)庫更新后,可以自動(dòng)將更新的數(shù)據(jù)同步到其他服務(wù)器上。
3)可以基于主從同步實(shí)現(xiàn)讀寫分離以提高服務(wù)器的負(fù)載能力。
4)主數(shù)據(jù)庫只進(jìn)行操作,而從數(shù)據(jù)庫負(fù)責(zé)讀操作。
5)可以基于LVS+keepalived對(duì)Redis實(shí)現(xiàn)均衡和高可用。
6)主庫崩潰時(shí)可以降為從庫,從庫也可以升級(jí)成為主庫。