Redis 持久化動態(tài)修改

2018-08-03 11:50 更新

其實相對于VIP的切換,動態(tài)修改持久化則是比較常見的一個需求,一般在一主多從多Sentinel的HA環(huán)境中,為了性能常常在Master上關閉持久化,而在Slave上開啟持久化,但是如果發(fā)生切換就必須有人工干預才能實現(xiàn)這個功能??梢岳胏lient-reconfig-script自動化該進程,無需人工守護,我們就以RDB的動態(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é)基本一致,不再贅述。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號