NoSQL - redis 備份/主從

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一樣。


主從備份:

wKiom1jh1rmArNcFAABamyv4gEw687.png

架構及原理:一主可以多從,從也可以配多從;

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 





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章