W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
其實(shí)相對(duì)于VIP的切換,動(dòng)態(tài)修改持久化則是比較常見(jiàn)的一個(gè)需求,一般在一主多從多Sentinel的HA環(huán)境中,為了性能常常在Master上關(guān)閉持久化,而在Slave上開啟持久化,但是如果發(fā)生切換就必須有人工干預(yù)才能實(shí)現(xiàn)這個(gè)功能。可以利用client-reconfig-script自動(dòng)化該進(jìn)程,無(wú)需人工守護(hù),我們就以RDB的動(dòng)態(tài)控制為例: Sentinel配置文件如下:
sentinel client-reconfig-script mymaster /redis/script/rdbctl.sh
rdbctl.sh源代碼:
#!/bin/bash
_DEBUG="on"
DEBUGFILE="/smsred/redis-3.0.4/log/sentinel_failover.log"
MASTERIP=${6}
MASTERPORT=${7}
SLAVEIP=${4}
SLAVEPORT=${5}
MASK='24'
IFACE='bond0'
MYIP=$(ip -4 -o addr show dev ${IFACE}| grep -v secondary| awk '{split($4,a,"/");print a[1]}')
DEBUG () {
if [ "$_DEBUG" = "on" ]; then
echo `$@` >> ${DEBUGFILE}
fi
}
set -e
DEBUG date
DEBUG echo $@
DEBUG echo "===Begin Failover==="
#If Master
if [ ${MASTERIP} = ${MYIP} ]; then
#Disable RDB
redis-cli -h ${MYIP} -p ${MASTERPORT} -a c1m2b3c4 config set save ""
DEBUG echo ${MYIP}
DEBUG echo "Disable Master RDB:" ${MYIP} ${MASTERPORT}
DEBUG echo "===End Failover==="
exit 0
#Or Slave
else
echo "test5" >> $DEBUGFILE
redis-cli -h ${MYIP} -p ${SLAVEPORT} -a c1m2b3c4 config set save "900 1 300 10 60 100000000"
DEBUG echo ${MYIP}
DEBUG echo "Enable Slave RDB:" ${MYIP} ${SLAVEPORT}
DEBUG echo "===End Failover==="
exit 0
fi
exit 1
原理和VIP切換一節(jié)基本一致,不再贅述。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: