日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 通过 RDB 方式进行数据备份与还原

發布時間:2023/12/4 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 通过 RDB 方式进行数据备份与还原 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis 通過 RDB 方式進行數據備份與還原

Intro

有的時候我們需要對 Redis 的數據進行遷移,今天介紹一下通過 RDB(快照)文件進行 Redis 數據的備份和還原

Redis 持久化

Redis 的數據持久化有兩種機制,一種是 RDB(Redis Database),一種是 AOF(Append Only File)

Redis 提供了不同級別的持久化方式:

  • RDB持久化方式能夠在指定的時間間隔能對你的數據進行快照存儲.

  • AOF持久化方式記錄每次對服務器寫的操作,當服務器重啟的時候會重新執行這些命令來恢復原始的數據,AOF命令以redis協議追加保存每次寫的操作到文件末尾.Redis還能對AOF文件進行后臺重寫,使得AOF文件的體積不至于過大.

  • 如果你只希望你的數據在服務器運行的時候存在,你也可以不使用任何持久化方式.

  • 你也可以同時開啟兩種持久化方式, 在這種情況下, 當redis重啟的時候會優先載入AOF文件來恢復原始的數據,因為在通常情況下AOF文件保存的數據集要比RDB文件保存的數據集要完整.

廢話不多說直接看下面的示例吧,通過 docker 運行一個 redis 實例,并設置一些數據,然后導出 RDB 文件,再運行一個 redis 實例通過 RDB 文件還原數據

備份

通過 docker run -d --name redis-test-1 redis:alpine 命令來創建一個 redis 實例,接著 SET 一個 key 保存到我們的 redis,使用命令 SET hello world 寫入測試數據,你也可以寫入別的自己想寫的數據,接著可以使用 keys * 來驗證數據是否寫入成功

測試數據寫入成功后使用 SAVE 命令來創建 RDB 文件,命令執行成功后我們可以在 /data 目錄下看到會有一個 dump.rdb 文件,這就是我們想要的 RDB 文件,通過 docker cp 命令可以把這個文件拷貝到 host 目錄下

還原

通過上面 RDB 文件我們可以在 redis 啟動的時候還原 RDB 文件中的數據,只需要在 Redis 啟動前把 RDB 文件放在 redis 的 data 目錄下就可以了。

執行 docker run --rm --name redis-test-2 -v ${pwd}/data:/data redis:alpine

這個命令我是在 powershell 上執行的,如果執行在 Linux 上執行需要把 ${pwd} 換成 $(pwd) 來表示當前目錄

可以看到上面的日志里有 Loading RDB ... 就是在加載 RDB 文件中的數據

我們再來驗證一下 RDB 文件里的數據是否真的加載到了新的 redis 實例中,先來驗證一下 data 目錄是否正常掛載了,執行 docker exec -it redis-test-2 sh 來進入到 redis 實例容器中,ls 查看 data 目錄中的文件看是否有我們期望的 RDB 文件,接著進入 redis-cli 來驗證數據是否存在

使用 keys * 來列出來所有的 key 信息,可以看到有我們在上一個 redis 里寫入的測試數據了,再來使用 GET hello 來驗證數據是否正確,至此我們的數據就還原到新的 redis 實例中了~~

More

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

  • Redis 調用forks. 同時擁有父進程和子進程。

  • 子進程將數據集寫入到一個臨時 RDB 文件中。

  • 當子進程完成對新 RDB 文件的寫入時,Redis 用新 RDB 文件替換原來的 RDB 文件,并刪除舊的 RDB 文件。

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

如果 redis 被訪問的比較頻繁,可以使用 BGSAVE 代替 SAVE 來異步創建 RDB 備份

如果 redis 不是使用 docker 來使用的,/data 目錄可以在 redis-cli 中使用 CONFIG GET dir 來獲取保存 rdb 文件的目錄,默認保存的 RDB 文件名稱是 dump.rdb,如果有修改過,可以通過 CONFIG GET dbfilename 來獲取當前使用的文件名

References

  • https://redis.io/topics/persistence

  • http://redis.cn/topics/persistence.html

總結

以上是生活随笔為你收集整理的Redis 通过 RDB 方式进行数据备份与还原的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。