redis主從複製過程
當配置好slave後,slave與master建立串連,然後發送sync命令。無論是第一次串連還是重新串連,master都會啟動一個後台進程,將 資料庫快照集儲存到檔案中,同時master主進程會開始收集新的寫命令並緩衝。後台進程完成寫檔案後,master就傳送檔案給slave,slave將 檔案儲存到硬碟上,再載入到記憶體中,接著master就會把緩衝的命令轉寄給slave,後續master將收到的寫命令發送給slave。
如果master同時收到多個slave發來的同步串連命令,master只會啟動一個進程來寫資料庫鏡像,然後發送給所有的slave。master同步資料時是非阻塞式的,可以接收使用者的讀寫請求。然而在slave端是阻塞模式的,slave在同步master資料時,並不能夠響應用戶端的查詢。
可以在master禁用資料持久化,只需要注釋掉master 設定檔中的所有save配置,然後只在slave上配置資料持久化
擁有主從伺服器的好處(從伺服器是唯讀,可以一主多從)
1. 主伺服器進行讀寫時,會轉移到從讀,減輕伺服器壓力
2. 熱備份 主從都可以設定密碼,也可以密碼不一致
進入/usr/data/redis/slave
建立 master slave1 slave2
1.複製redis.conf到3個目錄,修改連接埠 1000,2000,3000
2.修改pid路徑,日誌路徑
pidfile /usr/data/redis/slave/master/redis.pid
logfile /usr/data/redis/slave/master/redis.log
ps -ef | grep redis
root 19000 1 0 08:27 ? 00:00:00 redis-server 192.168.1.1:1000
root 19012 1 0 08:27 ? 00:00:00 redis-server 192.168.1.1:2000
root 19016 1 0 08:27 ? 00:00:00 redis-server 192.168.1.1:3000
串連用戶端
[root@iZ23pv5rps8Z ~]# redis-cli -h 192.168.1.1 -p 3000
查看許可權
192.168.1.1:3000> info
3台伺服器都是 # Replication role:master
設定從伺服器方式
1.命令方式
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.1.1,port=2000,state=online,offset=113,lag=0
slave1:ip=192.168.1.1,port=3000,state=online,offset=113,lag=0
master_repl_offset:113
# Replication
role:slave
master_host:192.168.1.1
master_port:1000
master_link_status:up
伺服器停止,主從就不起作用
2.設定檔
# slaveof
slaveof 192.168.1.1 1000
伺服器停止,主從依然起作用
主從同步,2者密碼可以不一致
192.168.1.1:1000> set lyg945 liuyonggang
192.168.1.1:1000> get lyg945
"liuyonggang"
192.168.1.1:2000> get lyg945
"liuyonggang"
192.168.1.1:3000> get lyg945
"liuyonggang"
Redis的主從架構,如果master發現故障了,還得手動將slave切換成master繼續服務,手動的方式容易造成失誤,導致資料丟失,那Redis有沒有一種機制可以在master和slave進行監控,並在master發送故障的時候,能自動將slave切換成master呢。有的,那就是哨兵。
哨兵的作用:
1、監控redis進行狀態,包括master和slave
2、當master down機,能自動將slave切換成master
下面配置哨兵監控redis進程,假如我們已經配置好了Master和Slave,具體詳細配置參
手動切換master
master SLAVEOF NO ONE
slave SLAVEOF 192.168.1.1 3000
建立哨兵
touch sentinel.conf 內容如下
sentinel monitor 主機名稱 主機ip 主機連接埠 票數n 票數多餘n的從機作為主機
sentinel monitor mymaster 192.168.1.1 1000 1
啟動哨兵