您好,登錄后才能下訂單哦!
redis持久化 – 兩種方式
redis提供了兩種持久化的方式,分別是RDB(Redis DataBase)和AOF(Append Only File)。
官方建議:兩種方式都打開,同時進行備份。耐久性不高的可以選快照 RDB。
RDB:就是在不同的時間點,將redis存儲的數據生成快照并存儲到磁盤等介質上;
優點:備份文件體積小,恢復速度快,fork子進程不影響父進程io;
缺點:故障時丟失數據會多點,數據集龐大時,因fork進程慢,導致客戶端響應延遲;
配置:save 600 1,默認為dump.rdb(CONFIG GET save && CONFIG GET dir .....)
AOF:就是將redis執行過的所有寫指令記錄下來,在下次redis重新啟動時,把這些寫指令從前到后再重復執行一遍,就可以實現數據恢復了,類似于mysql的binlog。根據fsync策略查找緩存指令記錄
優點:數據完整型好,體積過大時會自動重寫(將100條寫入變為1條set),采用redis協議易讀懂;
缺點:文件體積大,恢復較慢,存在fsync策略導致速度較慢;
配置:appendonly yes,默認文件名appendonly.aof (CONFIG GET appendonly);
恢復:比如執行了flushall,將備份文件中此條刪除,重啟即可。
注:重寫,Redis 2.2 需要自己手動執行 BGREWRITEAOF 命令;2.4 則可以自動觸發 AOF 重寫。
AOF文件出錯:(redis重啟時會拒絕載入aof文件)
a、備份現有的aof文件
b、# redis-check-aof --fix 命令行執行對現有aof文件進行修復
c、對比兩個aof文件區別,重啟服務器,載入修復后的aof備份文件
同時使用兩種備份策略,redis重啟情況下,默認aof優先,因為數據完整性高。
關閉使用兩種備份策略,redis就成內存數據庫了,和memcache一樣。
主從備份:
架構及原理:一主可以多從,從也可以配多從;
1、從連接到主服務器后,發送sync指令;
2、主接到sync指令后,開始執行bgsave,將命令寫入緩沖區;
3、bgsave結束后,主將保存得到的.rdb快照文件發給所有從,期間繼續記錄寫操作,telnet可驗證;
4、從丟棄舊的快照,載入新的快照。完畢后,主繼續發送緩沖區的寫指令,從進行增量備份。
配置:從服務器設置如下(當然也可以在redis內部修改,但建議還是修改配置文件)
port 6380
slaveof 192.168.1.1 6379 //配置主的IP 和端口
masterauth <password> //配置主的密碼
slave-read-only yes //讓從只讀,2.4以后默認就是只讀
repl-ping-slave-period 10 //設置slave向master發起ping的頻率,每10s發起一次
再詳細的配置,見redis章節。
同步策略:
策略是,首先會嘗試進行增量同步,如不成功,要求從機進行全量同步,之后進行增量同步。
主從切換
1、手動切換
redis-cli -n 6379 shutdown //關掉主
redis-cli -p 6380 slaveof NO ONE //將從設為主,插入 set ddd aaa測試是否成功
cp -f /redis2/dump.rdb /redis/ //主恢復后,將從的dump拷貝到主下
redis-server /redis/master.conf //啟動主(要確保從的save設置已生效)
redis-cli -p 6380 slaveof 192.168.10.1 6379 //將從再切換為從,即 ok
2、自動切換 sentinel
暫時先不了解,參考http://www.cnblogs.com/Xrinehart/p/3502198.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。