1. 集羣的作用
(1)主從備份,防止主機宕機
(2)讀寫分離,分擔master的任務
(3)任務分離,從服分別分擔備份工作與計算工作
2.集羣的形式:
左邊的:星形,所有的slave都圍着master
右邊的:線性,後面的slave作爲前面slave的slave。這樣的好處是:master宕機後,可以直接切換到slave1
3.主從通信過程
4.主要配置:
【Master配置】:
(1)關閉rdb快照(備份工作交給slave)
(2)可以開啓aof
【slave配置】:
(1)聲明slave-of
(2)配置密碼[如果master有密碼]
(3)[某1個]slave打開 rdb快照功能
(4)配置是否只讀[slave-read-only]
4.具體實現過程
【第一步:修改配置文件】
將 redis.conf 複製兩份,分別爲redis6380.conf 和 redis6381.conf。因爲默認的端口是6379.
① 主服務器redis.conf 的修改:
master 禁掉rdb,打開aof
如果需要加密碼(一般不建議設置密碼,因爲主從服務器是在內網)
搜索“password”找到如下:
改爲:(123456就是密碼)
如果設置了密碼,連接進去後就要密碼:
② 6380從服務器,vim redis6380.conf:
6380slave 打開rdb,禁掉aof
——→ 基本的修改,主要是針對端口的修改:
——→ slave的一些設置:
去掉註釋,改爲 slaveof localhost 6379 #6380服務器作爲6379服務器的slave。
作爲6379的slave服務器,保持只讀狀態。
③ 6381從服務器,vim redis6381.conf:
6381slave 禁掉rdb,禁掉aof
【第二步:分別打開三臺服務器】
【第三步:master寫入數據,slave查看數據】
# 在主服務器6379寫入數據
#新的終端連接6380 和 6381從服務器並查看
#由於設置了只讀,所以在從服務器無法寫入
#備註:如果主服務器設置了密碼,那麼從服務器就獲取不到主服務器的key了。
那麼就需要在所有的從服務器上也加上密碼,其實上面說了,內網之間其實是不需要密碼的。
找到如下:
改爲:(123456是上面master主服務器設置的密碼)
然後再試就可以在從服務器上獲取到主服務器的數據了。
5. redis主從複製的缺陷
每次salave斷開後,(無論是主動斷開,還是網絡故障),如果再連接master,都要把master全部dump出來rdb,再aof,即同步的過程都要重新執行一遍.
所以要記住---多臺slave不要一下都啓動起來,否則master可能I/O劇增