欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Ubuntu?14.04系統(tǒng)上備份和恢復Redis數(shù)據(jù)詳細步驟

 更新時間:2024年04月24日 08:47:35   作者:白如意i  
這篇文章主要給大家介紹了關于在Ubuntu?14.04系統(tǒng)上備份和恢復Redis數(shù)據(jù)的詳細步驟,文中通過代碼介紹的非常詳細,對大家學習或者使用Redis具有一定的參考借鑒價值,需要的朋友可以參考下

簡介

Redis 是一個內(nèi)存中的鍵值緩存和存儲(也可以是數(shù)據(jù)庫),同時也可以持久化(永久保存)到磁盤上。在本文中,您將了解如何在 Ubuntu 14.04 服務器上備份 Redis 數(shù)據(jù)庫。

默認情況下,Redis 數(shù)據(jù)保存在一個 .rdb 文件中,這是您的 Redis 數(shù)據(jù)集的一個時間點快照。這個快照是在指定的時間間隔內(nèi)生成的,非常適合用于備份。

先決條件

要完成本教程中的步驟,您需要:

  • 一個 Ubuntu 14.04 服務器
  • 安裝 Redis。您可以按照這個 Redis 設置教程中的 master 設置(盡管在主從集群中同樣適用)
  • 確保您的 Redis 服務器正在運行
  • 如果設置了 Redis 密碼,強烈建議設置,確保您知道密碼。密碼在 Redis 配置文件 /etc/redis/redis.conf 中。

步驟 1 — 定位 Redis 數(shù)據(jù)目錄

Redis 將其數(shù)據(jù)存儲在服務器上的一個目錄中,這就是我們要備份的內(nèi)容。首先我們需要知道它的位置。

在 Ubuntu 和其他 Linux 發(fā)行版中,Redis 數(shù)據(jù)庫目錄是 /var/lib/redis。但是,如果您管理的服務器是繼承而來的,并且 Redis 數(shù)據(jù)位置已更改,您可以通過輸入以下命令來定位它:

sudo locate *rdb

或者,您也可以從 redis-cli 提示符中找到它。要做到這一點,輸入:

redis-cli

如果 Redis 服務器沒有運行,響應將是:

無法連接到 127.0.0.1:6379 的 Redis:連接被拒絕
未連接>

在這種情況下,啟動 Redis 并使用以下命令重新連接:

sudo service redis-server start

redis-cli

Shell 提示現(xiàn)在應該變成:

127.0.0.1:6379>

連接到 Redis 后,接下來的兩個命令將對其進行身份驗證并獲取數(shù)據(jù)目錄:

auth 插入-redis-密碼-這里

config get dir

最后一個命令的輸出應該是您的 Redis 數(shù)據(jù)目錄:

1) "dir"
2) "/var/lib/redis"

記下您的 Redis 目錄。如果它與顯示的目錄不同,請確保在整個教程中使用此目錄。

現(xiàn)在可以退出數(shù)據(jù)庫命令行界面:

exit

檢查這是否是正確的目錄:

ls /var/lib/redis

您應該看到一個 dump.rdb 文件。這就是 Redis 數(shù)據(jù)。如果 appendonly 也已啟用,您還將看到一個 appendonly.aof 或另一個 .aof 文件,其中包含服務器接收的所有寫操作的日志。

有關 Redis 持久性的討論,請參閱此帖子以了解這兩個文件之間的區(qū)別。基本上,.rdb 文件是當前快照,而 .aof 文件保留了您的 Redis 歷史。這兩者都值得備份。

我們將從只有 .rdb 文件開始,并以自動備份這兩個文件結束。

(可選)步驟 2 — 添加示例數(shù)據(jù)

在本節(jié)中,您可以創(chuàng)建一些示例數(shù)據(jù)以存儲在您的 Redis 數(shù)據(jù)庫中。如果您的服務器上已經(jīng)有數(shù)據(jù),您可以直接備份現(xiàn)有內(nèi)容。

登錄到數(shù)據(jù)庫命令行界面:

redis-cli

進行身份驗證:

auth 插入-redis-密碼-這里

讓我們添加一些示例數(shù)據(jù)。每個步驟后,您應該收到 OK 的響應。

SET shapes:triangles "3 sides"

SET shapes:squares "4 sides"

確認數(shù)據(jù)已添加。

GET shapes:triangles

GET shapes:squares

以下是輸出:

"3 sides"

"4 sides"

要將這些更改保存到 /var/lib/redis/dump.rdb 文件中,請執(zhí)行保存操作:

save

您可以退出:

exit

如果愿意,現(xiàn)在可以檢查 dump 文件的內(nèi)容。它應該包含您的數(shù)據(jù),盡管以機器友好的形式呈現(xiàn):

sudo cat /var/lib/redis/dump.rdb

步驟 3 —— 備份 Redis 數(shù)據(jù)

現(xiàn)在你知道了 Redis 數(shù)據(jù)的存儲位置,是時候進行備份了。從官方 Redis 網(wǎng)站上可以找到以下引用:

Redis 非常友好地支持數(shù)據(jù)備份,因為你可以在數(shù)據(jù)庫運行時復制 RDB 文件:一旦生成,RDB 就不會被修改,而在生成過程中會使用臨時名稱,并且只有在新快照完成時才會使用 rename(2) 原子地將其重命名為最終目的地。

因此,你可以在 Redis 服務器運行時備份或復制數(shù)據(jù)庫文件。假設你要將其備份到家目錄下的一個目錄中,執(zhí)行備份的命令如下:

sudo cp /var/lib/redis/dump.rdb /home/sammy/redis-backup-001

Redis 定期保存內(nèi)容,這意味著如果上述命令是你運行的全部內(nèi)容,你不能保證備份是最新的。 你需要先保存你的數(shù)據(jù)。

然而,如果可以接受潛在的少量數(shù)據(jù)丟失,僅備份這一個文件就可以。

保存數(shù)據(jù)庫狀態(tài)

為了獲得一個更加近期的 Redis 數(shù)據(jù)副本,更好的方法是訪問 redis-cli,即 Redis 命令行。

按照第 1 步中的說明進行身份驗證。

然后,像這樣發(fā)出 save 命令:

save

輸出應該類似于:

OK
(1.08s)

退出數(shù)據(jù)庫。

現(xiàn)在你可以運行上面給出的 cp 命令,確信你的備份是完全最新的。

雖然 cp 命令將提供數(shù)據(jù)庫的一次性備份,但最佳解決方案是設置一個可以自動化該過程的 cron 作業(yè),并使用一個可以執(zhí)行增量更新并在需要時恢復數(shù)據(jù)的工具。

步驟 4 —— 使用 rdiff-backup 和 Cron 配置自動更新

在本節(jié)中,我們將配置一個自動備份,備份整個 Redis 數(shù)據(jù)目錄,包括數(shù)據(jù)文件。

有幾種自動化備份工具可供選擇。在本教程中,我們將使用一個較新且用戶友好的工具,名為 rdiff-backup。

rdiff-backup 是一個命令行備份工具。很可能你的服務器上尚未安裝 rdiff-backup,因此你首先需要安裝它:

sudo apt-get install -y rdiff-backup

現(xiàn)在它已經(jīng)安裝好了,你可以通過將 Redis 數(shù)據(jù)備份到家目錄中的一個文件夾來測試它。在本例中,我們假設你的家目錄是 /home/sammy

請注意,如果目標目錄不存在,腳本將會創(chuàng)建它。換句話說,你不必自己創(chuàng)建它。

使用 –preserve-numerical-ids,源目錄和目標目錄的所有權將保持一致。

sudo rdiff-backup --preserve-numerical-ids /var/lib/redis /home/sammy/redis

與之前的 cp 命令類似,這是一次性備份。不同之處在于現(xiàn)在我們備份整個 /var/lib/redis 目錄,并且使用 rdiff-backup。

現(xiàn)在我們將使用 cron 自動化備份,以便在設定的時間進行備份。為此,打開系統(tǒng) crontab:

sudo crontab -e

(如果你在此服務器上以前沒有使用過 crontab,請在提示時選擇你喜歡的文本編輯器。)

在文件底部追加如下條目。

0 0 * * * rdiff-backup --preserve-numerical-ids --no-file-statistics /var/lib/redis /home/sammy/redis

此 Cron 條目將在每天午夜執(zhí)行一次 Redis 備份。–no-file-statistics 開關將禁用寫入 rdiff-backup-data 目錄中的 file_statistics 文件,這將使 rdiff-backup 運行更快,并且占用的磁盤空間稍少一些。

或者,你可以使用以下條目進行每日備份:

@daily rdiff-backup --preserve-numerical-ids --no-file-statistics /var/lib/redis /home/sammy/redis

有關 Cron 的更多信息,請閱讀這篇關于 Cron 的文章。

目前,備份將每天執(zhí)行一次,因此你可以明天回來進行最終測試?;蛘?,你可以暫時增加備份頻率以確保它正常工作。

由于文件的所有者是 redis 系統(tǒng)用戶,你可以使用以下命令驗證它們是否存在(確保你等到備份實際觸發(fā)):

ls -l /home/sammy/redis

你的輸出應該類似于:

total 20
-rw-rw---- 1 redis redis    70 Sep 14 13:13 dump.rdb
drwx------ 3 root  root  12288 Sep 14 13:49 rdiff-backup-data
-rw-r----- 1 redis redis   119 Sep 14 13:09 redis-staging-ao.aof

現(xiàn)在你的 Redis 數(shù)據(jù)每天都會在同一臺服務器上的家目錄中進行備份。

步驟 5 — 從備份中恢復 Redis 數(shù)據(jù)庫

現(xiàn)在您已經(jīng)學會了如何備份 Redis 數(shù)據(jù)庫,接下來的步驟將向您展示如何從 dump.rdb 備份文件中恢復數(shù)據(jù)庫。

恢復備份需要您用恢復文件替換活動的 Redis 數(shù)據(jù)庫文件。由于這可能具有破壞性,我們建議如果可能的話,將其恢復到一個全新的 Redis 服務器。

您不希望用更有問題的恢復文件覆蓋您的實時數(shù)據(jù)庫。然而,即使是在恢復到同一臺服務器時,重命名而不是刪除當前文件可以最小化風險,這也是本教程展示的策略。

檢查恢復文件內(nèi)容

首先,檢查您的 dump.rdb 文件的內(nèi)容。確保它包含您想要的數(shù)據(jù)。

您可以直接檢查轉儲文件的內(nèi)容,盡管請記住它使用的是 Redis 友好的格式,而不是人類友好的格式:

sudo cat /home/gilly/redis/dump.rdb

對于一個小型數(shù)據(jù)庫,您的輸出應該看起來像這樣:

REDIS0006?shapes:triangles3 sidesshapes:squares4 sides??!^?\?,?

如果您最近的備份沒有所需的數(shù)據(jù),那么您不應該繼續(xù)進行恢復。如果內(nèi)容存在,可以繼續(xù)。

可選:模擬數(shù)據(jù)丟失

讓我們模擬數(shù)據(jù)丟失,這將是從備份中恢復的原因。

登錄到 Redis:

redis-cli

在這一系列命令中,我們將使用 Redis 進行授權并刪除 shapes:triangles 條目:

auth insert-redis-password-here

DEL shapes:triangles

現(xiàn)在讓我們確保該條目已被刪除:

GET shapes:triangles

輸出應該是:

(nil)

保存并退出:

save

exit

可選:設置新的 Redis 服務器

現(xiàn)在,如果您計劃恢復到一個新的 Redis 服務器,請確保新的 Redis 服務器已經(jīng)啟動。

為了本教程的目的,我們將只遵循 Redis 集群教程的 第 1 步,盡管如果您想要一個更復雜的設置,可以遵循整篇文章。

如果您遵循了 第 2 步,在那里您添加了密碼并啟用了 AOF,請確保在恢復過程中考慮到這一點。

一旦您通過運行 redis-benchmark -q -n 1000 -c 10 -P 5 驗證了新服務器上的 Redis 已經(jīng)啟動,您就可以繼續(xù)。

停止 Redis

在我們替換 Redis 轉儲文件之前,我們需要停止當前運行的 Redis 實例。一旦停止 Redis,您的數(shù)據(jù)庫將處于離線狀態(tài)。

sudo service redis-server stop

輸出應該是:

Stopping redis-server: redis-server

檢查它是否真的停止了:

sudo service redis-server status
redis-server is not running

接下來,我們將重命名當前的數(shù)據(jù)庫文件。

重命名當前的 dump.rdb

Redis 從 dump.rdb 文件中讀取其內(nèi)容。讓我們將當前的文件重命名,為我們的恢復文件騰出空間。

sudo mv /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.old

請注意,如果您決定當前版本比您的備份文件更好,您可以恢復 dump.rdb.old。

如果 AOF 已啟用,請將其關閉

AOF 跟蹤每個寫操作到 Redis 數(shù)據(jù)庫。然而,由于我們試圖從時間點備份中恢復,我們不希望 Redis 重新創(chuàng)建其 AOF 文件中存儲的操作。

如果您按照 Redis 集群教程中的說明設置了 Redis 服務器,則 AOF 已啟用。

您還可以列出 /var/lib/redis/ 目錄的內(nèi)容。如果您在那里看到一個 .aof 文件,那么您已經(jīng)啟用了 AOF。

讓我們將 .aof 文件重命名,暫時將其放在一邊。這會將每個以 .aof 結尾的文件重命名,因此如果您有多個 AOF 文件,您應該單獨重命名文件,而不要運行此命令:

sudo mv /var/lib/redis/*.aof /var/lib/redis/appendonly.aof.old

編輯您的 Redis 配置文件,暫時關閉 AOF:

sudo nano /etc/redis/redis.conf

在 AOF 部分,查找 appendonly 指令,并將其從 yes 更改為 no。這將禁用它:

appendonly no

恢復 dump.rdb 文件

現(xiàn)在我們將使用我們的恢復文件,如果您按照本教程的先前步驟進行操作,該文件應該保存在 /home/sammy/redis/dump.rdb

如果您要將數(shù)據(jù)恢復到新的服務器,現(xiàn)在是從備份服務器上傳文件到新服務器的時候了:

scp /home/sammy/redis/dump.rdb sammy@your_new_redis_server_ip:/home/sammy/dump.rdb

現(xiàn)在,在恢復服務器上,可以是原始的 Redis 服務器或者是新的服務器,您可以使用 cp 命令將文件復制到 /var/lib/redis 文件夾:

sudo cp -p /home/sammy/redis/dump.rdb /var/lib/redis

(如果您將文件上傳到 /home/sammy/dump.rdb,則使用命令 sudo cp -p /home/sammy/dump.rdb /var/lib/redis 來復制文件。)

或者,如果您想使用 rdiff-backup,運行下面顯示的命令。請注意,這只適用于從您最初使用 rdiff-backup 設置的文件夾進行恢復。使用 rdiff-backup 時,您必須指定目標文件夾中的文件名:

sudo rdiff-backup -r now /home/sammy/redis/dump.rdb /var/lib/redis/dump.rdb

有關 -r 選項的詳細信息,請參考本文末尾給出的項目網(wǎng)站。

為 dump.rdb 文件設置權限

如果您要將數(shù)據(jù)恢復到與備份相同的服務器,那么您可能已經(jīng)擁有了正確的權限。

如果您將備份文件復制到新的服務器,您可能需要更新文件權限。

讓我們查看 /var/lib/redis/ 目錄中 dump.rdb 文件的權限:

ls -la /var/lib/redis/

如果您看到類似以下內(nèi)容:

-rw-r-----  1 sammy sammy   70 Feb 25 15:38 dump.rdb
-rw-rw----  1 redis redis 4137 Feb 25 15:36 dump.rdb.old

您需要更新權限,以便文件歸 redis 用戶和組所有:

sudo chown redis:redis /var/lib/redis/dump.rdb

同時更新文件以便組也可以寫入:

sudo chmod 660 /var/lib/redis/dump.rdb

現(xiàn)在再次列出 /var/lib/redis/ 目錄的內(nèi)容:

ls -la /var/lib/redis/

現(xiàn)在您恢復的 dump.rdb 文件已經(jīng)擁有了正確的權限:

-rw-rw----  1 redis redis   70 Feb 25 15:38 dump.rdb
-rw-rw----  1 redis redis 4137 Feb 25 15:36 dump.rdb.old

啟動 Redis

現(xiàn)在我們需要再次啟動 Redis 服務器。

sudo service redis-server start

檢查數(shù)據(jù)庫內(nèi)容

讓我們看看恢復是否成功。

登錄到 Redis:

redis-cli

檢查 shapes:triangles 條目:

GET shapes:triangles

輸出應該是:

"3 sides"

太棒了!我們的恢復工作正常。

退出:

exit

如果您不使用 AOF,那么您已經(jīng)完成了!您恢復的 Redis 實例應該已經(jīng)恢復正常。

(可選)啟用 AOF

如果您想要恢復或開始使用 AOF 來跟蹤數(shù)據(jù)庫的所有寫操作,請按照以下說明操作。AOF 文件必須從 Redis 命令行重新創(chuàng)建。

登錄到 Redis:

redis-cli

打開 AOF:

BGREWRITEAOF

您應該會得到以下輸出:

Background append only file rewriting started

運行 info 命令。這將生成大量輸出:

info

滾動到Persistence部分,并檢查aof條目是否與此處顯示的內(nèi)容匹配。如果 aof_rewrite_in_progress 為 0,則 AOF 文件的重新創(chuàng)建已經(jīng)完成。

持久化

. . .

aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:0
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

如果確認AOF文件的重建已經(jīng)完成,現(xiàn)在可以退出Redis命令行:

```custom_prefix(127.0.0.1:6379>)
exit

您可以再次列出/var/lib/redis中的文件:

ls /var/lib/redis

您應該再次看到一個活動的.aof文件,例如appendonly.aofredis-staging-ao.aof,以及dump.rdb文件和其他備份文件。

確認后,停止Redis服務器:

sudo service redis-server stop

現(xiàn)在,在redis.conf文件中再次啟用AOF:

sudo nano /etc/redis/redis.conf

然后通過將appendonly的值更改為yes來重新啟用AOF:

appendonly yes

啟動Redis:

sudo service redis-server start

如果您想再次驗證數(shù)據(jù)庫的內(nèi)容,只需再次運行檢查數(shù)據(jù)庫內(nèi)容部分。

就是這樣!您恢復的Redis實例應該恢復正常了。

結論

按照本文所述的方式備份Redis數(shù)據(jù)適用于當您不介意將數(shù)據(jù)備份到同一臺服務器上的目錄時。

當然,最安全的方法是將備份到不同的機器。您可以通過閱讀以下關于備份的文章來探索更多備份選項:

  • 如何為您的VPS選擇有效的備份策略

您可以使用許多這些備份方法與/var/lib/redis目錄中的相同文件。

總結

到此這篇關于在Ubuntu 14.04系統(tǒng)上備份和恢復Redis數(shù)據(jù)的文章就介紹到這了,更多相關Ubuntu備份和恢復Redis數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • redis啟動報錯Can‘t?open?the?log?file:?No?such?file?or?directory

    redis啟動報錯Can‘t?open?the?log?file:?No?such?file?or?d

    這篇文章主要介紹了redis啟動報錯Can‘t?open?the?log?file:?No?such?file?or?directory問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 關于Redis的內(nèi)存淘汰策略詳解

    關于Redis的內(nèi)存淘汰策略詳解

    當內(nèi)存空間使用達到限制時,Redis 會根據(jù)配置策略來選擇不同處理方式,要么返回 errors,要么按照不同的策略算法來清除一些舊數(shù)據(jù),達到回收內(nèi)存的目的,這就是 Redis 的內(nèi)存淘汰,有些文章中,內(nèi)存淘汰也叫緩存回收,需要的朋友可以參考下
    2023-05-05
  • redis?bitmap數(shù)據(jù)結構之java對等操作詳解

    redis?bitmap數(shù)據(jù)結構之java對等操作詳解

    bitmap是以其高性能出名。其基本原理是一位存儲一個標識,其他衍生知道咱就不說了,而redis就是以這種原生格式存儲的,這篇文章主要介紹了redis?bitmap數(shù)據(jù)結構之java對等操作,需要的朋友可以參考下
    2022-10-10
  • Redis實現(xiàn)每日簽到功能(大數(shù)據(jù)量)

    Redis實現(xiàn)每日簽到功能(大數(shù)據(jù)量)

    在面對百萬級用戶簽到情況下,傳統(tǒng)數(shù)據(jù)庫存儲和判斷會遇到瓶頸,使用Redis的二進制數(shù)據(jù)類型可實現(xiàn)高效的簽到功能,示例代碼展示了如何調用這些功能,包括當天簽到、補簽以及查詢簽到記錄,PHP結合Redis二進制數(shù)據(jù)類型可有效處理大數(shù)據(jù)量下的簽到問題
    2024-10-10
  • Redis實現(xiàn)分布式鎖的實例講解

    Redis實現(xiàn)分布式鎖的實例講解

    在本篇文章里小編給大家整理了一篇關于Redis實現(xiàn)分布式鎖的實例講解內(nèi)容,有興趣的朋友們可以學習參考下。
    2021-12-12
  • Redis高級玩法之利用SortedSet實現(xiàn)多維度排序的方法

    Redis高級玩法之利用SortedSet實現(xiàn)多維度排序的方法

    Redis的SortedSet是可以根據(jù)score進行排序的,以手機應用商店的熱門榜單排序為例,根據(jù)下載量倒序排列。接下來通過本文給大家分享Redis高級玩法之利用SortedSet實現(xiàn)多維度排序的方法,一起看看吧
    2019-07-07
  • Redis之常用數(shù)據(jù)結構哈希表

    Redis之常用數(shù)據(jù)結構哈希表

    這篇文章主要介紹了Redis常用的數(shù)據(jù)結構哈希表,哈希表是一種保存鍵值對的數(shù)據(jù)結構,具有一定的參考價值,需要的朋友可以參考閱讀
    2023-04-04
  • 淺談一下如何保證Redis緩存與數(shù)據(jù)庫的一致性

    淺談一下如何保證Redis緩存與數(shù)據(jù)庫的一致性

    這篇文章主要介紹了一下如何保證Redis緩存與數(shù)據(jù)庫的一致性,今天這篇文章就帶你詳細了解一下四種同步策略,需要的朋友可以參考下
    2023-03-03
  • 淺談Redis如何應對并發(fā)訪問

    淺談Redis如何應對并發(fā)訪問

    本文主要介紹了Redis如何應對并發(fā)訪問,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的原因及解決方案

    Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的原因及解決方案

    Redis作為一種高效的鍵值對存儲系統(tǒng),常用于緩存數(shù)據(jù)庫減少IO操作,下面這篇文章主要介紹了Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的原因及解決方案,文中介紹的非常詳細,需要的朋友可以參考下
    2025-04-04

最新評論