Redis叢集_1.redis主從配置,redis叢集_1.redis

來源:互聯網
上載者:User

Redis叢集_1.redis主從配置,redis叢集_1.redis

Redis主從配置(Master-Slave)

一、 Redis Replication的特點:
1):一個Master可以同步多個Slave
2):不僅Master可以同步多個Slave,Slave也可以同步其它Slave,可以構成一個圖形結構,同時還能分擔Master的同步壓力
3):Redis Replication使用的是非同步複製。從2.8開始,Slave會周期性發起一個Ack確認replication stream被處理進度
4):複製在Master Server是以非阻塞模式完成資料同步。即使多個Master-Slave同時同步,Master Server仍然可以提供查詢或修改
5):複製在Slave Server也是以非阻塞的方式完成資料同步。在同步期間,Slave Server可以提供資料查詢,但返回的是同步之前的資料,同時還能配置當Master與Slave失去聯絡時,讓Slave返回用戶端一個錯誤提示
6):Slave Server可以為用戶端提供唯讀操作的服務,但寫服務仍然必須由Master來完成,這樣可以分載Master的讀操作壓力,在分壓的同時還供了資料冗餘,同時還可以通過增加Slave進行唯讀操作來提升擴充性
7):可以通過修改Master Server的redis.config設定檔來將持久化操作交給Slave Server去操作
註:Slave是唯讀,只可以讀取資料,而不能寫入資料
   
   
二、Redis Replication工作原理:
1):Slave啟動後,無論是第一次串連還是重連到Master,它都會主動發出一個SYNC命令
2):當Master收到SYNC命令之後,將會執行BGSAVE(後台存檔進程),即在後台儲存資料到磁碟(rdb快照檔案),同時收集所有新收到的寫入和修改資料集的命令存入緩衝區(非查詢類)
3):Master在後台把資料儲存到快照檔案完成後,會傳送整個資料庫檔案到Slave
4):Slave接收到資料庫檔案後,會把記憶體清空,然後載入該檔案到記憶體中以完成一次完全同步
5):然後Master會把之前收集到緩衝區中的命令和新的修改命令依次傳送給Slave
6):Slave接受到之後在本地執行這些資料修改命令,從而達到最終的資料同步
7):之後Master與Slave之間將會不斷的通過非同步方式進行命令的同步,從而保證資料的時時同步
8):如果Master和Slave之間的連結出現斷連,Slave可以自動重連Master。根據版本的不同,斷連後同步的方式也不同:
    2.8之前:重連成功之後,一次全量同步操作將被自動執行
    2.8之後:重連成功之後,進行部分同步操作

部分同步:
從2.8開始,當Master和Slave之間的串連斷開重連後,他們之間可以採用持續複製處理方式替代完全重同步操作。部分重同步會用到PSYNC的命令,2.8之後的版本才有此命令,之前的只有SYNC命令。只要Slave是2.8或以上的版本,Slave就會根據Master的版本來決定到底是使用PSYNC還是SYNC

部分同步工作原理如下:
1):Master為被發送的複製流建立一個記憶體緩衝區(in-memory backlog),記錄最近發送的複製流命令
2):Master和Slave之間都記錄一個複製位移量(replication offset)和當前Master ID(Master run id)
3):當出現網路斷開,Slave會重新串連,並且向Master請求繼續執行原來的複製進程
4):如果Slave中斷網前的MasterID和當前要連的MasterID相同,並且從斷開時到當前時刻Slave記錄的位移量所指定的資料仍然儲存在Master的複製流緩衝區裡面,則Master會向Slave發送缺失的那部分資料,Slave執行後複製工作可以繼續執行
5):否則Slave就執行完整重同步操作

三、配置:

系統內容:CentOS 6.5 mini
軟體版本:redis-2.8.19

IP地址:
節點1:192.168.100.211
節點2:192.168.100.212
節點3:192.168.100.213

1:指定Slave(在Slave節點配置)
# vi /main/redis/redis.conf
slaveof 192.168.100.211 6379
#註:有這一行表示為Slave,沒有則表示為Master。這裡的IP地址為Master的IP地址,後面的連接埠號碼也是為Master的連接埠號碼


2:設定認證密碼(三個節點)
可以設定,也可以不設定
# vi /main/redis/redis.conf
masterauth 1234567890
requirepass 1234567890
#註:如果Master端通過requirepass設定了密碼,則Slave需要通過masterauth配置密碼


到此配置就完畢了


四、測試:
1:在命令列介面進行查看(三個節點):
# /main/redis/src/redis-cli
127.0.0.1:6379> info replication

節點1顯示如下(master):
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.100.212,port=6379,state=online,offset=41663,lag=1
slave1:ip=192.168.100.213,port=6379,state=online,offset=41663,lag=1
master_repl_offset:41963
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:41962

節點2顯示如下(slave1):
# Replication
role:slave
master_host:192.168.100.211
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:41520
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

節點3顯示如下(slave2):
# Replication
role:slave
master_host:192.168.100.211
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:42106
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0



2:資料測試
Master
# /main/redis/src/redis-cli -a 1234567890 set hello doiido

Slave1
# /main/redis/src/redis-cli -a 1234567890 get hello
"doiido"

Slave2
# /main/redis/src/redis-cli -a 1234567890 get hello
"doiido"

Slave2
# /main/redis/src/redis-cli -a 1234567890 set hello2 doiido2
(error) READONLY You can't write against a read only slave.

從上面的操作中可以看出,從Master中寫入資料後,Slave是會同步資料的,而在Slave中是無法寫入資料的


到這裡Redis的主從配置完畢,但是這個時候是不會自動切換的。想要其自動切換,需要進行Sentinel配置


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.