redis的備份


了解redis的朋友應該知道它有兩種數據持久化的方式,這里我作一個簡單的介紹,AOF(append only  file)和RDB.

1.RDB

這是一種比較常見的方式,采用 寫時復制 的方式,效率高,速度快,介紹一下寫時復制的機制:

 

當 Redis 需要保存 dump.rdb 文件時, 服務器執行以下操作:

 

  • Redis 調用 fork() ,同時擁有父進程和子進程。
  • 子進程將數據集寫入到一個臨時 RDB 文件中。
  • 當子進程完成對新 RDB 文件的寫入時,Redis 用新 RDB 文件替換原來的 RDB 文件,並刪除舊的 RDB 文件。

 

這種工作方式使得 Redis 可以從寫時復制(copy-on-write)機制中獲益。

 

這種機制使得RDB的速度非常得快,但是存在一些安全性問題,當我的redis服務因為某種原因宕了,當內存新增數據很龐大,子進程需要幾分鍾才能將臨時文件書寫完畢的時候。那么在宕機之后,這幾分鍾的數據很可能就丟失了。所以處於安全性考慮的原因,我會建議使用第二種方式,AOF機制。

2.AOF

aof采用一種fsync的方式進行持久化,相比RDB的方式會相對較慢。但是相對安全,甚至可以說是絕對安全的,取決於具體的配置。他不需要子進程進行協助,他是一種將有關寫的命令append到文件的方式來記錄redis的狀態方式。aof也可以分為三種方式進行append。在此之前先打開appendonly的開關為yes.

     appendfsync always  (每次向內存中執行寫操作的時候,都執行一次fsync,相當安全,建議數據量不大的時候,又想保證數據安全性的情況下使用)

     appendfsync  everysec (每秒進行一次fsync,中庸之道)

     appendfsync no  (不建議使用)

 

我這里例舉一下redis>2.2的由RDB切換到AOF的方式

[root@localhost redis-2.8.9]# redis-cli
127.0.0.1:6379> config set appendonly yes
OK
127.0.0.1:6379> config set save ""
OK
127.0.0.1:6379> 

redis-cli進入redisShell客戶端,然后開啟aof ,關閉RDB方式。

記得修改 redis.conf里面的配置,不然下次重啟還是使用原來的配置,讀取dump.rdb進行恢復

配置修改如下:

   #save ""                                 save ""   
 
save 900 1                                  #save 900 1 
save 300 10            ------------------>  #save 300 10 
save 60 10000                               #save 60 10000

 

  appendonly no             --------------------->  appendonly yes

 

 

 

 

 

備份文件有兩種方式

一.RBD備份方式

1.執行save命令 ,找到dump.rdb(默認放到執行命令(redis-server)的路徑下)

2.執行redis-server  redis.conf (如果配置文件選擇的是RDB備份方式)

啟動之后就ok了

二.AOF備份方式

1.找到appendonly.aof(默認放到執行命令(redis-server)的路徑下)

 

2.執行redis-server redis.conf就可以了(如果配置文件選擇的是AOF備份方式)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM