溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

redis主從復(fù)制故障恢復(fù)及持久化的意義

發(fā)布時間:2020-08-08 18:34:48 來源:網(wǎng)絡(luò) 閱讀:598 作者:jwenshan 欄目:系統(tǒng)運維

redis主從復(fù)制故障恢復(fù)及持久化的意義
服務(wù)器配置:(centos7)

服務(wù)器IP 安裝組件 節(jié)點 備注
192.168.27.210 redis-5.0.5 master 一主兩從架構(gòu)
192.168.26.112 redis-5.0.5 slave
192.168.26.206 redis-5.0.5 slave

最新版下載地址到各結(jié)點:Wget http://download.redis.io/releases/redis-5.0.5.tar.gz
redis主從復(fù)制故障恢復(fù)及持久化的意義
解壓壓縮包并配置:
redis主從復(fù)制故障恢復(fù)及持久化的意義
redis主從復(fù)制故障恢復(fù)及持久化的意義
切換用戶(生產(chǎn)環(huán)境少用ROOT用戶操作)
[jerry@master data]$ sudo chown -R jerry.root redis-5.0.5
redis主從復(fù)制故障恢復(fù)及持久化的意義
Cd /data/redis-5.0.5/src
make
192.168.27.210配置文件:vim /data/redis-5.0.5/redis-m-7000.conf
bind 0.0.0.0
port 7000
logfile "7000.log"
dbfilename "dump-7000.rdb"
daemonize yes
rdbcompression yes

192.168.26.112配置:
Cd /data/redis-5.0.5/src
make

[jerry@BDDB redis-5.0.5]$ vim /data/redis-5.0.5/redis-s-7000.conf
redis主從復(fù)制故障恢復(fù)及持久化的意義
bind 0.0.0.0
port 7000
logfile "7000.log"
dbfilename "dump-7000.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.27.210 7000

192.168.26.206配置:
Cd /data/redis-5.0.5/src
make
redis主從復(fù)制故障恢復(fù)及持久化的意義
bind 0.0.0.0
port 7000
logfile "7000.log"
dbfilename "dump-7000.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.27.210 7000
分別啟動各結(jié)點:
[jerry@master src]$ ./redis-server ../redis-m-7000.conf
redis主從復(fù)制故障恢復(fù)及持久化的意義
[jerry@BDDB src]$ sudo ln -s /data/redis-5.0.5/src/redis-server /usr/bin/redis-server
[jerry@BDDB src]$ redis-server ../redis-s-7000.conf
redis主從復(fù)制故障恢復(fù)及持久化的意義
[jerry@DGIDC src]$ sudo ln -s /data/redis-5.0.5/src/redis-server /usr/bin/redis-server
[jerry@DGIDC src]$ redis-server ../redis-s-7000.conf
[jerry@DGIDC src]$ ss -tnl
redis主從復(fù)制故障恢復(fù)及持久化的意義
看下三臺服務(wù)器主從狀態(tài)信息:
redis主從復(fù)制故障恢復(fù)及持久化的意義
接著我們創(chuàng)建鍵值,測試主從是否同步:
三個結(jié)點我們都創(chuàng)建一個鏈接,方便我們使用。
[jerry@master src]$ sudo ln -s /data/redis-5.0.5/src/redis-cli /usr/bin/redis-cli
[jerry@BDDB src]$ sudo ln -s /data/redis-5.0.5/src/redis-cli /usr/bin/redis-cli
[jerry@DGIDC src]$ sudo ln -s /data/redis-5.0.5/src/redis-cli /usr/bin/redis-cli
觀察主從信息狀態(tài):
redis主從復(fù)制故障恢復(fù)及持久化的意義
info
redis主從復(fù)制故障恢復(fù)及持久化的意義
redis主從復(fù)制故障恢復(fù)及持久化的意義
重啟主后服務(wù)器觀察發(fā)現(xiàn)未保存的數(shù)據(jù)將丟失:
redis主從復(fù)制故障恢復(fù)及持久化的意義
redis主從復(fù)制故障恢復(fù)及持久化的意義
結(jié)論:
使用主從模式時應(yīng)注意master節(jié)點的持久化操作,matser節(jié)點在未使用持久化的情況詳情下如果宕機(jī),并自動重新拉起服務(wù),從服務(wù)器會出現(xiàn)丟失數(shù)據(jù)的情況。數(shù)據(jù)丟失的原因:因為master服務(wù)掛了之后,重啟服務(wù)后,slave節(jié)點會與master節(jié)點進(jìn)行一次完整的重同步操作,所以由于master節(jié)點沒有持久化,就導(dǎo)致slave節(jié)點上的數(shù)據(jù)也會丟失掉。所以在配置了Redis的主從模式的時候,應(yīng)該打開主服務(wù)器的持久化功能。
測試使用哨兵模式,自動監(jiān)視Master節(jié)點,當(dāng)前掛掉后,自動將Slaver節(jié)點變?yōu)镸aster節(jié)點:
redis主從復(fù)制故障恢復(fù)及持久化的意義
然后手動切換從(26.206):
redis主從復(fù)制故障恢復(fù)及持久化的意義
127.0.0.1:7000> slaveof 192.168.26.112 7000
redis主從復(fù)制故障恢復(fù)及持久化的意義
127.0.0.1:7000> set name tom
redis主從復(fù)制故障恢復(fù)及持久化的意義
小結(jié):

  1. Master可讀可寫,Slaver只能讀,不能寫
  2. Master可以對應(yīng)多個Slaver,但是數(shù)量越多壓力越大,延遲就可能越嚴(yán)重
  3. Master寫入后立即返回,幾乎同時將寫入異步同步到各個Slaver,所以基本上延遲可以忽略
  4. 可以通過slaveof no one命令將Slaver升級為Master(當(dāng)Master掛掉時,手動將某個Slaver變?yōu)镸aster)
  5. 可以通過sentinel哨兵模式監(jiān)控Master,當(dāng)Master掛掉時自動選舉Slaver變?yōu)镸aster,其它Slaver自動重連新的Master(自動不成功有時需要使用手動切主,暫時還沒找到具體原因)
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI