redis主從複制配置和使用都非常簡單。通過主從複制可以允許多個slave server擁有和master server相同的資料庫副本。下面是關于redis主從複制的一些特點:
1.master可以有多個slave
2.除了多個slave連到相同的master外,slave也可以連接配接其他slave形成圖狀結構
3.主從複制不會阻塞master。也就是說當一個或多個slave與master進行初次同步資料時,master可以繼續處理client發來的請求。相反slave在初次同步資料時則會阻塞不能處理client的請求。
4.主從複制可以用來提高系統的可伸縮性,我們可以用多個slave專門用于client的讀請求,比如sort操作可以使用slave來處理。也可以用來做簡單的資料備援
5.可以在master禁用資料持久化,隻需要注釋掉master配置檔案中的所有save配置,然後隻在slave上配置資料持久化。
主從複制的過程:
當設定好slave伺服器後,slave會建立和master的連接配接,然後發送sync指令。無論是第一次同步建立的連接配接還是連接配接斷開後的重新連接配接,master都會啟動(fork)一個背景程序,将資料庫快照儲存到檔案中(fork一個程序入内在也被複制了,即記憶體會是原來的兩倍),同時master主程序會開始收集新的寫指令并緩存起來。背景程序完成寫檔案後,master就發送檔案給slave,slave将檔案儲存到磁盤上,然後加載到記憶體恢複資料庫快照到slave上。接着master就會把緩存的指令轉發給slave。而且後續master收到的寫指令都會通過開始建立的連接配接發送給slave。從master到slave的同步資料的指令和從 client發送的指令使用相同的協定格式。當master和slave的連接配接斷開時slave可以自動重建立立連接配接。如果master同時收到多個 slave發來的同步連接配接指令,隻會使用啟動一個程序來寫資料庫鏡像,然後發送給所有slave。
配置slave伺服器隻需要在配置檔案中加入如下配置:slaveof 192.168.77.135 6379
或者在任一redis-cli端口輸入:slaveof 192.168.77.135 6379
示範第二種:
# cd /usr/redis/src/test
# cp redis6378.conf redis6379.conf
複制一份配置檔案
# vim redis6379.conf
port 6379
儲存
# redis-server redis6378.conf &
# redis-server redis6379.conf &
啟動服務
# redis-cli -p 6379
127.0.0.1:6379> slaveof 127.0.0.1 6378
檢視主從資訊
slave機: 輸入
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.77.135
master_port:6378
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:15
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
master機:輸入
127.0.0.1:6378>info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.77.135,port=6379,state=online,offset=603,lag=0
master_repl_offset:603
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:602