Redis主從複製配置

一、Redis的Replication:

    這裏首先需要說明的是,在Redis中配置Master-Slave模式真是太簡單了。相信在閱讀完這篇Blog之後你也可以輕鬆做到。這裏我們還是先列出一些理論性的知識,後面給出實際操作的案例。
    下面的列表清楚的解釋了Redis Replication的特點和優勢。
    1). 同一個Master可以同步多個Slaves。
    2). Slave同樣可以接受其它Slaves的連接和同步請求,這樣可以有效的分載Master的同步壓力。因此我們可以將Redis的Replication架構視爲圖結構。
    3). Master Server是以非阻塞的方式爲Slaves提供服務。所以在Master-Slave同步期間,客戶端仍然可以提交查詢或修改請求。
    4). Slave Server同樣是以非阻塞的方式完成數據同步。在同步期間,如果有客戶端提交查詢請求,Redis則返回同步之前的數據。
    5). 爲了分載Master的讀操作壓力,Slave服務器可以爲客戶端提供只讀操作的服務,寫服務仍然必須由Master來完成。即便如此,系統的伸縮性還是得到了很大的提高。
    6). Master可以將數據保存操作交給Slaves完成,從而避免了在Master中要有獨立的進程來完成此操作。
    
二、Replication的工作原理:

    在Slave啓動並連接到Master之後,它將主動發送一個SYNC命令。此後Master將啓動後臺存盤進程,同時收集所有接收到的用於修改數據集的命令,在後臺進程執行完畢後,Master將傳送整個數據庫文件到Slave,以完成一次完全同步。而Slave服務器在接收到數據庫文件數據之後將其存盤並加載到內存中。此後,Master繼續將所有已經收集到的修改命令,和新的修改命令依次傳送給Slaves,Slave將在本次執行這些數據修改命令,從而達到最終的數據同步。
    如果Master和Slave之間的鏈接出現斷連現象,Slave可以自動重連Master,但是在連接成功之後,一次完全同步將被自動執行。

 

三、準備環境:

Master:10.20.189.218     Centos 5.6
Slave: 10.20.189.219     Centos 5.6

 

四、如何配置Replication

主控:

1.啓動服務

[root@localhost ~]# redis-server /etc/redis_persistent_2.6.conf

2.查看主控配置

[root@localhost redis]# cat /etc/redis_persistent_2.6.conf |grep -v "^#"|grep -v "^$"
daemonize yes #redis 以後臺進程運行,默認爲NO
pidfile /var/run/redis_persistent.pid
port 6379
timeout 0  #保持客戶端長連接
loglevel notice #日誌級別,分爲debug,verbose,notice,waring
logfile  /data/logs/redis/redis_persitent.log
databases 16

save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes #存儲到本地數據庫是否壓縮,默認爲yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
slave-serve-stale-data yes
slave-read-only yes
slave-priority 100
 requirepass Kingsoft_Kss2012
 maxclients 200
appendonly no
appendfilename redis_persistent.aof
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 100000
slowlog-max-len 128
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

從控:

3.把以上配置文件拷貝,然後加入2行即可啓動服務:

slaveof 10.20.189.218 6379

masterauth Kingsoft_Kss2012

[root@localhost ~]# redis-server /etc/redis_persistent_2.6.conf

 

五、應用示例:

主控:

Redis主從複製配置

從控:

Redis主從複製配置

 

額外的命令:

#清空當前數據庫中的所有Keys。
redis 127.0.0.1:6379> flushdb
OK
#刪除其中一個測試Key,並查看刪除後的結果。
redis 127.0.0.1:6379> del mykey

(integer) 1

[root@localhost redis]# redis-cli -h 10.20.189.218 -a Kingsoft_Kss2012 info |grep -A 3 'Replication'
# Replication
role:master
connected_slaves:1
slave0:10.20.189.219,6379,online


相關連接:

數據容災:http://blog.csdn.net/xiangliangyu2008/article/details/8165644

主從持久化測試:http://ylw6006.blog.51cto.com/470441/1077260

redis主從keepalive: http://ylw6006.blog.51cto.com/470441/1086455

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章