Redis 主從配置


一、redis主從復制特點:

1.master可以擁有多個slave

2.多個slave可以連接同一個master外,還可以連接到其他slave

3.主從復制不會阻塞master,在同步數據時,master可以繼續處理client請求

4.提高系統的伸縮性

5.可以在master禁用數據持久化,注釋掉master配置文件中的所有save配置,只需在slave上配置數據持久化

 

二、redis主從復制過程:

當配置好slave后,slave與master建立連接,然后發送sync命令。無論是第一次連接還是重新連接,master都會啟動一個后台進 程,將數據庫快照保存到文件中,同時master主進程會開始收集新的寫命令並緩存。后台進程完成寫文件后,master就發送文件給 slave,slave將文件保存到硬盤上,再加載到內存中,接着master就會把緩存的命令轉發給slave,后續master將收到的寫命令發送給 slave。如果master同時收到多個slave發來的同步連接命令,master只會啟動一個進程來寫數據庫鏡像,然后發送給所有的slave。

 

三、redis主從配置過程

    1). 同時啟動兩個Redis服務器,可以考慮在同一台機器上啟動兩個Redis服務器,分別監聽不同的端口,如6379和6380。
啟動
./redis-server local_6379.conf &
./redis-server local_6380.conf &
 
    2). 在Slave服務器上執行一下命令:
     /> redis-cli -p 6380 
    redis 127.0.0.1:6380> slaveof 127.0.0.1 6379
    OK
    redis 127.0.0.1:6380>  config set masterauth redis  #假設Master的密碼為redis
    OK
    當然Master設置密碼為config set requirepass redis
    上面的方式只是保證了在執行slaveof命令之后,redis_6380成為了redis_6379的slave,一旦服務(redis_6380)重新啟動之后,他們之間的復制關系將終止。
    如果希望長期保證這兩個服務器之間的主從關系,可以在redis_6380的配置文件中做如下修改:
    /> vi 6380.conf
    將
    # slaveof <masterip> <masterport>
    改為
    slaveof 127.0.0.1 6379
    masterauth redis

    保存退出。
 
去除主從關系:
slaveof no one
備注:
SLAVEOF host port

SLAVEOF 命令用於在 Redis 運行時動態地修改復制(replication)功能的行為。

通過執行 SLAVEOF host port 命令,可以將當前服務器轉變為指定服務器的從屬服務器(slave server)。

如果當前服務器已經是某個主服務器(master server)的從屬服務器,那么執行 SLAVEOF host port 將使當前服務器停止對舊主服務器的同步,丟棄舊數據集,轉而開始對新主服務器進行同步。

另外,對一個從屬服務器執行命令 SLAVEOF NO ONE 將使得這個從屬服務器關閉復制功能,並從從屬服務器轉變回主服務器,原來同步所得的數據集不會被丟棄。

利用『 SLAVEOF NO ONE 不會丟棄同步所得數據集』這個特性,可以在主服務器失敗的時候,將從屬服務器用作新的主服務器,從而實現無間斷運行。

時間復雜度:
SLAVEOF host port ,O(N),  N 為要同步的數據數量。
SLAVEOF NO ONE , O(1) 。
返回值:總是返回  OK 。
 
四、實例
 
127.0.0.1:6379> incr ab
(integer) 1
 
127.0.0.1:6380> get ab
"1"
 
127.0.0.1:6379> keys *
1) "a"
2) "ab"
 
127.0.0.1:6380> keys *
1) "a"
2) "ab"
 
127.0.0.1:6379> del a
 (integer) 1
 
127.0.0.1:6379> keys *
1) "ab"
 
127.0.0.1:6380> keys *
1) "ab"
 
127.0.0.1:6380> del ab
(error) READONLY You can't write against a read only slave.
 

 參考:

http://redis.readthedocs.org/en/latest/server/slaveof.html

http://redis.io/topics/replication

http://www.cnblogs.com/stephen-liu74/archive/2012/02/23/2364717.html

http://sofar.blog.51cto.com/353572/861276/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM