Cntos7搭建redis主從復制,並模擬故障主從切換
主從復制搭建
主機:192.168.161.179
從機:192.168.161.180
1、 安裝主redis
自己本地環境,關閉防火牆。
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#setenforce 0
#systemctl stop firewalld
#systemctl disable firewalld
安裝相關依賴
yum install –y gcc gcc-c++ make
下載redis4.0.2包
http://download.redis.io/releases/redis-4.0.2.tar.gz
下載好后上傳至服務器,進行解壓(我上傳至opt目錄)
解壓后編譯安裝
cd redis-4.0.2/
make PREFIX=/usr/local/redis install
將redis-4.0.2目錄的redis.conf sentinel.conf配置文件復制到安裝目錄/usr/local/redis
將redis-4.0.2/src目錄的redis-cli redis-sentinel redis-server復制到安裝目錄 /usr/local/redis/
修改配置
Cd /usr/local/redis
Vim redis.conf
修改內容如下:
將bind 127.0.0.1這一行注釋掉
將protected-mode yes改為protected-mode no
將daemonize no改為daemonize yes
將logfile ""改為logfile"/usr/local/redis/log/redis.log"
添加密碼
Vim sentinel.conf
將sentinel monitor mymaster 127.0.0.1 6379 2改為sentinel monitor mymaster 192.168.161.179 6379 2
添加一下幾行
daemonize yes
protected-mode no
logfile "/usr/local/redis/log/sentinel.log"
2、配置redis從
安裝的方法及路徑與redis1主一樣
復制redis配置文件
cp redis.conf sentinel.conf /usr/local/redis/
cp redis-cli redis-sentinel redis-server /usr/local/redis/
cd /usr/local/redis/
vim redis.conf
修改內容如下:
將bind 127.0.0.1注釋掉
將protected-mode yes改為protected-mode no
將daemonize no改為daemonize yes
將logfile ""改為logfile " /usr/local/redis/log/redis.log "
添加一行slaveof 192.168.161.179 6379 (主服務器ip)
配置密碼
修改sentinel.conf
修改內容如下:
192.168.161,179是主服務器ip,這里是寫主服務器的ip。
sentinel monitor mymaster 192.168.161.179 6379 2
daemonize yes
protected-mode no
logfile "/usr/local/redis/log/sentinel.log"
3、啟動主機
啟動主redis
./redis-cli -p 6379 -a 123456
啟動從redis
./redis-cli -p 6379 -a 1234567
4、測試是否可以主從復制
主機上設置一個鍵值對
#set a 1
在從主機測試是否同步
#get a
從主機測試
#set b 2 (報錯因為從機是只讀,OK主從已經搭建ok)
日常的啟動關閉主從的命令如下。
主從復制搭建成功。
模擬故障切換,將slave切換為主
5、測試主從切換,當主(master)出現故障時將從(slave)切換成主。
模擬主掛了,關閉主
Ps –ef | grep redis
./redis-cli -p 6379 -a 123456 shutdown
在從設備上關閉復制功能,並將從服務器變為主服務器,原來所得的數據集不會被丟棄。
./redis-cli -p 6379 -a 1234567 slaveof NO ONE
登陸:./redis-cli -p 6379 -a 1234567
查看是否變為主:info
從已經變回master,也可以寫入數據
出現故障時將slave(從)切換為主ok。
6、測試原來的主redis恢復正常了,恢復回去。
先將現在的主redis數據進行保存
在將現在主redis根目錄下的dump.rdb,文件拷貝到原來主redis的根目錄,進行數據覆蓋。
(我是遠程拷貝過去的)
scp -P 22 dump.rdb root@192.168.161.179:/usr/local/redis/
啟動原來的主。
在現在這個主在執行最后一步操作,就是將原來的主恢復,將現在這個主還是切換為從。
./redis-cli -p 6379 -a 1234567 slaveof 192.168. 161.179 6379
指定主服務器。
我們可以看看是否恢復原來的主,登陸原來的主查看。
登陸redis成功輸入:info
已經恢復到原始環境。