Redis入門到精通7-Redis主從輔助、哨兵機制、持久化機制
1.主從複製,讀寫分離
1、Master可以擁有多個Slave;
2、多個salve可以連線同一個Master,還可以連結到其他的slave
3、主從複製不會阻塞Master,在同步資料時,master可以繼續處理client請求
4、提供系統的伸縮性。
1.1主從複製過程:
1、slave與master簡歷連線,傳送sync同步命令;
2、master會開啟一個後臺程序,將資料快照儲存到檔案中,同時master主程序會開始收集新的寫命令並快取;
3、後臺完成儲存後,就將檔案傳送給slave;
4、slave將此檔案儲存到硬碟上
1.2主從複製配置:
1.2.1 準備從伺服器
方法一:
直接新裝一臺虛擬機器並修改IP,重新安裝部署或者redis或者從其他機器上copy。
方法二:
使用虛擬機器軟體自帶的克隆功能,克隆一臺伺服器。移除網絡卡配置資訊,重新配置ip(或者在圖形使用者介面中修改)。
[[email protected] ~]#rm -rf /etc/udev/rules.d/70-persistent-net.rules [[email protected] ~]#reboot ..... ... . //重啟登入 [[email protected] ~] vim /etc/sysconf/network-scripts/ifcfg-eth0
內容修改為:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
[[email protected] ~] service network restart [[email protected] ~] ip add //觀察被自動賦予的IP 型如:10.0.31.135 [[email protected] ~] vim /etc/sysconf/network-scripts/ifcfg-eth0
修改為:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.0.31.135
PREFIX=24
GATEWAY=10.0.31.1
DNS1=10.0.31.1
重啟網絡卡並測試網路連線:
[[email protected] ~] service network restart [[email protected] ~] ping www.baidu.com //內網機器就ping一臺內網ip
克隆過來的伺服器,有redis,,如果新機沒有redis,可以用scp命令將redis的原始碼和redis服務copy到新機器上。
1.2.2 修改從伺服器配置檔案
主伺服器不需要任何變化,只需要修改從伺服器的/usr/local/redis/conf/redis.conf
[[email protected] ~]# cd /usr/local/redis/ [[email protected] redis]# ls bin conf [[email protected] redis] vim /usr/local/redis/conf/redis.conf
# slaveof<masterip><masterprot>
修改為:slaveof 10.0.31.144 6379
# masterauth<master-password> (如果主伺服器沒有密碼,此步可以省略)
修改為: masterauth redis
1.2.3 依次啟動主從節點
[[email protected] bin]# ./redis-server /usr/local/redis/conf/6379.conf
使用info檢視role角色即可知道是主服務還是從服務。
1.2.4 驗證主從複製
主節點繼續寫入資料,從節點觀察資料;
從伺服器寫操作,不被允許: 127.0.0.1:6379> set a 1 (error) READONLY You can't write against a read only slave.
主節點模擬宕機,檢視叢節點狀態。
1.3存在問題
主節點宕機,無法繼續寫入資料。
2.哨兵模式
有了主從複製的實現之後,我們如果想從伺服器進行監控,那麼在redis2.6以後提供了一個”哨兵“機制,並在2.8版本以後功能穩定起來。
哨兵:顧名思義,就是監控Redis系統的執行狀況。其主要功能有兩點:
(1)監控主資料庫和從資料庫是否正常執行;
(2)主資料庫出現故障時,可以自動將從資料庫轉換為主資料庫,實現自動切換。
2.1 實現步驟
在其中一臺從伺服器配置sentinel.conf,如 135 (為什麼要選一臺從伺服器:主伺服器宕機,監聽就無法實現,主從伺服器都宕機,即便是有監聽也沒得切換了。當然,如果有多餘的機器,可以在新機器上單獨部署)。
(1)copy檔案sentinel.conf到 /usr/local/redis/conf 中
[[email protected] ~]# cp /usr/local/src/redis3.2/sentinel.conf /usr/local/redis/conf/
(2)修改 sentinel.conf 檔案
[[email protected] ~]# vim /usr/local/redis/conf/sentinel.conf
dir: 日誌路徑,根據自己的要求儲存。
sentinel monitor mymaster 10.0.31.144 6379 1
解釋 : #名稱 # ip #埠號 # 投票選舉次數(即有多少篇就被選舉為主,這裡節點少,就配置為1)。
sentinel down-after-millisecond mymaster 5000
解釋:哨兵程式多久去監控一次叢集,#預設 1s 檢查一次,這裡配置超時5000毫秒為宕機。
sentinel failover-timeout mymaster 900000
解釋:若哨兵在 該配置值內未完成failover操作(即發生故障時,m/s切換),本次failover失敗
sentinel parallel-syncs mymaster 1
解釋:有多少個從節點
(3)啟動sentinel哨兵
/usr/local/redis/bin/redis-server /usr/local/redis/conf/sentinel.conf --sentinel &
(4)檢視哨兵相關訊息命令
/usr/local/redis/bin/redis-cli -h 10.0.31.135 -p 26379 info sentinel
(5)關閉主伺服器檢視叢集資訊:
/usr/local/redis/bin/redis-cli -h 10.0.31.144 -p 26379 6379 shutdown
3.持久化機制
3.1Redis簡單事務(期待後續版本更新)
redis的事務非常簡單,使用方法:
首先是使用multi開啟事務,這是設定的資料都會放在隊裡進行儲存,最後使用exec執行,把資料依次儲存到redis中,使用discard方法取消事務。
127.0.0.1:6379> multi OK 127.0.0.1:6379> set a 1 QUEUED 127.0.0.1:6379> set b 2 QUEUED 127.0.0.1:6379> set name jack QUEUED 127.0.0.1:6379> exec 1) OK 2) OK 3) OK 127.0.0.1:6379> keys * 1) "b" 2) "a" 3) "name"
存在問題:redis事務不能保證同時成功或失敗進行提交或失敗,所以redis事務目前還是比較簡單,期待在後續版本中的優化。
127.0.0.1:6379> get a "1" 127.0.0.1:6379> get name "jack" 127.0.0.1:6379> multi OK 127.0.0.1:6379> incr a QUEUED 127.0.0.1:6379> incr name //將字串型別incr QUEUED 127.0.0.1:6379> exec 1) (integer) 2 2) (error) ERR value is not an integer or out of range 字串型別incr,報錯,此時按照事務的特性,應該都回滾! 127.0.0.1:6379> get a "2" //incr a 並沒有回滾! 127.0.0.1:6379>
3.2 持久化機制
Redis是支援持久化的記憶體資料庫,也就是說redis需要經常將記憶體中的資料同步到硬碟來保證持久化。redis持久化有兩種方式
3.2.1 snapshotting 快照(rdb)
預設方式,將記憶體中以快照的方式寫入到二進位制檔案中,預設為dump.rdb,可以通過配置設定自動做快照持久化的方式。我們可以配置redis在n秒內如果m個key修改,就自動做快照。
snapshotting 設定:redis.conf(本文中的6379.conf)
save 900 1 #900秒內,超過1個key被修改,則發起快照儲存
save 300 10 #300秒內,超過10個key被修改,則發起快照儲存
save 60 10000 #60秒內,超過10000個key被修改,則發起快照儲存
3.2.2 append-only file(aof)
類似於mysql日誌,由於快照方式是在一定時間間隔做一次,所以可能發生redis意外宕機的情況就會丟失最後一次快照後的所有被修改的資料,aof比快照方式有更好的持久化型,是由於redis在使用aof是,redis會將每一個收到的寫命令都通過write函式追加到命令中,在redis重新啟動時會重新執行檔案中儲存的寫命令在記憶體中重建這個資料庫的內容,這個檔案在redis3.2/bin目錄下,appendonly.aof。aof不是立即寫到硬碟上,可以通過配置檔案修改強制寫到硬碟中。
aof設定:redis.conf(本文中的6379.conf)
appendonly yes //啟動aof持久化 ,持久化有三種方式:
#appendfsync always //收到寫命令就立即寫入到磁碟,效率最慢,但是保證完整的持久化(最常用)
#appendfsync everysec //每秒寫一次硬碟,在效能和持久化方面做了很好的這種
#appendfsync no //完全依賴os,效能最好,持久化沒保證。
修改6379.conf appendonly yes 重啟redis 發現conf/目錄下多了一個appendonly.aof [[email protected] conf]# ll 總用量 52 -rw-r--r-- 1 root root 41421 10月 21 11:40 6379.conf -rw-r--r-- 1 root root 86 10月 21 11:42 appendonly.aof -rw-r--r-- 1 root root 41 10月 21 11:41 dump.rdb 執行set操作觀察appendonly.aof的內容。
提示:開啟aof後之前的rdb模式就時效了,且之前的資料會被清空。
相關推薦
Redis入門到精通7-Redis主從輔助、哨兵機制、持久化機制
七、Redis主從複製、哨兵、持久化機制 1.主從複製,讀寫分離 1、Master可以擁有多個Slave; 2、多個salve可以連線同一個Master,還可以連結到其他的slave 3、主從複製不會阻塞Master,在同步資料時,master可以繼續處理c
Redis-3.0.7 Sentinel主從切換的叢集管理
D:\Programs\Redis-x64-3.0.501>redis-cli -h 192.168.0.68 info Replication # Replication role:slave master_host:192.168.0.149 master_port:6379 master_lin
Redis入門與實踐--Redis初識(一)
Redis 入門到實踐 甚贊Redis 高效能Key-Value伺服器 多中資料結構 豐富的功能 高可用分散式支援 Redis 目標 Redis 初始 API的理解和使用 Redis 客戶端的使用 Redis 持久化的
Redis筆記(二)-主從複製與哨兵機制
單機缺點及解決方案 單機問題:機器故障資料丟失、容量瓶頸。QPS瓶頸 需要叢集的原因: 併發量OPS的需求。要超過10w/s。 資料量“大資料”,機器只能存256G,但是需要存500G 3.叢集可以備份資料 Redis不能支撐高併發的瓶頸--
Redis學習筆記(7)-redis一主多從搭建高可用環境之簡單版
在redis的主目錄下面建立三個資料夾 [[email protected] redis-4.0.11]# pwd /root/redis/redis-4.0.11 [[email protected] redis-4.0.11]# mkdi
Redis學習筆記7--Redis管道(pipeline)
redis是一個cs模式的tcp server,使用和http類似的請求響應協議。一個client可以通過一個socket連線發起多個請求命令。每個請求命令發出後client通常會阻塞並等待redis服務處理,redis處理完後請求命令後會將結果通過響應報文返回給clien
Redis入門--1.安裝Redis
redis是什麼? 是完全開源免費的,用c語言編寫的,是一個單執行緒,高效能的(key/value)記憶體資料庫,基於記憶體執行並支援持久化的nosql資料庫 redis能幹嘛? 主要是用來做快取,但不僅僅只能做快取,比如:redis的計數器生成分散式唯一主鍵,redis實現分散式鎖,
《【面試突擊】— Redis篇》-- Redis哨兵原理及持久化機制
能堅持別人不能堅持的,才能擁有別人未曾擁有的。關注程式設計大道公眾號,讓我們一同堅持心中所想,一起成長!! 《【面試突擊】— Redis篇》-- Redis哨兵原理及持久化機制 在這個系列裡,我會整理一些面試題與大家分享,幫助年後和我一樣想要在金三銀四準備跳槽的同學。我們一起鞏固、突擊面
分布式緩存技術redis學習系列(三)——redis高級應用(主從、事務與鎖、持久化)
master ica not ood www working can 出了 owin 上文《詳細講解redis數據結構(內存模型)以及常用命令》介紹了redis的數據類型以及常用命令,本文我們來學習下redis的一些高級特性。 回到頂部 安全性設置 設置客戶端操作秘密
redis--(三)高級命令、主從復制、安全性、哨兵
哨兵 伸縮性 當前 打印 一個 local cli info 不存在 返回滿足的所有鍵keys *(可以模糊匹配 keys n*) keys *、keys l* exists 是否存在指定的key 存在返回1 不存在返回0 exists name expire 設
Redis的刪除機制、持久化 主從
Redis的使用分兩點: 效能如下圖所示,我們在碰到需要執行耗時特別久,且結果不頻繁變動的SQL,就特別適合將執行結果放入快取。這樣,後面的請求就去快取中讀取,使得請求能夠迅速響應。 併發在大併發的情況下,所有的請求直接訪問資料庫,資料庫會出現連線異常。這個時候,就需要使用redis做一個
四、redis系列之主從複製與哨兵機制
1. 緒言 在現實應用環境中,出於資料容量、容災、效能等因素的考慮,往往不會只使用一臺伺服器,而是使用叢集的方式。Redis 中也有類似的維持一主多從的方式提高 Redis 叢集的高可用性的方案,而其中不可避免的則是如何保證主從例項間的資料一致性,複製(Replication)是其解決辦法。本篇介紹re
Redis入門(下載、安裝、執行)(兩個系統Linux、window)
Redis入門(下載、安裝)(Linux、window) 一、Redis介紹 Redis是NoSql的一種。 1、什麼是NoSql NoSql,全名:Not Only Sql,是一種非關係型資料庫,它不能替代關係弄資料庫,只是關係型資料庫的一個補充,是可以解決高
Redis從入門到精通 Redis入門實戰視訊教程 Redis視訊+文件
課程目錄 第1章:Redis 資料結構的用法與用例—完整 第1節:Redis 簡介 課時1-2:培訓須知.doc 課時3:Redis 簡介(上).mp4 課時4:Redis 簡介(下).mp4 課時5:字串鍵(上).mp4 課時6:字串鍵(中).mp4 課時7:
Linux環境下 Redis 安裝、啟動、連線、主從複製、哨兵機制
安裝步驟 Linux 版本號 CentOS-6.4-x86_64 Redis 版本號 redis-3.0.6.tar.gz 1、usr資料夾中,建立redis資料夾 2、解壓 redis-3.0.6.tar.gz 3、解壓後進入到資料夾 redis-3.0.6 4、編譯 ma
redis在Docker下的主從複製(讀寫分離)、哨兵(主從切換)
公司專案涉及到redis,最近不太忙於是準備仔細學習下,起初是直接在Windows下搭建,現在試試Docker下搭建redis然後試下哨兵配置,廢話不多說,直接搭建步驟: 1.Docker安裝redis 指令1)docker search redis 查詢
redis主從、哨兵、叢集的區別
關於redis主從、哨兵、叢集的介紹網上很多,這裡就不贅述了。 一、主從 通過持久化功能,Redis保證了即使在伺服器重啟的情況下也不會損失(或少量損失)資料,因為持久化會把記憶體中資料儲存到硬碟上,重啟會從硬碟上載入資料。 。但是由於資料是儲存在一臺伺服器上的,如果這
redis的主從複製(讀寫分離)、哨兵(主從切換)配置
當資料量變得龐大的時候,讀寫分離還是很有必要的。同時避免一個redis服務宕機,導致應用宕機的情況,我們啟用sentinel(哨兵)服務,實現主從切換的功能。redis提供了一個master,多個slave的服務。 準備三個redis服務,依次命名資料夾子
關於redis的主從、哨兵、叢集
關於redis主從、哨兵、叢集的介紹網上很多,這裡就不贅述了。 一、主從 通過持久化功能,Redis保證了即使在伺服器重啟的情況下也不會損失(或少量損失)資料,因為持久化會把記憶體中資料儲存到硬碟上
Redis入門、進階、實戰
Redis 簡介 Redis 是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。 Redis 與其他 key - value 快取產品相比有以下三個特點: Redis支援