redis 主从模式_Redis主从模式部署文档
Redis復制概念
中文資料:http://www.redis.cn/topics/cluster-tutorial.html
在 Redis 復制的基礎上,使用和配置主從復制非常簡單,能使得從 Redis 服務器(下文稱 slave)能精確得復制主 Redis 服務器(下文稱 master)的內容。每次當 slave 和 master 之間的連接斷開時, slave 會自動重連到 master 上,并且無論這期間 master 發生了什么, slave 都將嘗試讓自身成為 master 的精確副本。
這個系統的運行依靠三個主要的機制:
- 當一個 master 實例和一個 slave 實例連接正常時, master 會發送一連串的命令流來保持對 slave 的更新,以便于將自身數據集的改變復制給 slave , :包括客戶端的寫入、key 的過期或被逐出等等。
- 當 master 和 slave 之間的連接斷開之后,因為網絡問題、或者是主從意識到連接超時, slave 重新連接上 master 并會嘗試進行部分重同步:這意味著它會嘗試只獲取在斷開連接期間內丟失的命令流。
- 當無法進行部分重同步時, slave 會請求進行全量重同步。這會涉及到一個更復雜的過程,例如 master 需要創建所有數據的快照,將之發送給 slave ,之后在數據集更改時持續發送命令流到 slave 。
當 master 關閉持久化時,復制的安全性
在使用 Redis 復制功能時的設置中,強烈建議在 master 和在 slave 中啟用持久化。當不可能啟用時,例如由于非常慢的磁盤性能而導致的延遲問題,應該配置實例來避免重置后自動重啟。
為了更好地理解為什么關閉了持久化并配置了自動重啟的 master 是危險的,檢查以下故障模式,這些故障模式中數據會從 master 和所有 slave 中被刪除:
- 我們設置節點 A 為 master 并關閉它的持久化設置,節點 B 和 C 從 節點 A 復制數據。
- 節點 A 崩潰,但是他有一些自動重啟的系統可以重啟進程。但是由于持久化被關閉了,節點重啟后其數據集合為空。
- 節點 B 和 節點 C 會從節點 A 復制數據,但是節點 A 的數據集是空的,因此復制的結果是它們會銷毀自身之前的數據副本。
當 Redis Sentinel 被用于高可用并且 master 關閉持久化,這時如果允許自動重啟進程也是很危險的。例如, master 可以重啟的足夠快以致于 Sentinel 沒有探測到故障,因此上述的故障模式也會發生。
任何時候數據安全性都是很重要的,所以如果 master 使用復制功能的同時未配置持久化,那么自動重啟進程這項應該被禁用。
配置主從復制
第一種方法,在slave節點配置文件添加
$ cat redis-7001.conf...slaveof 192.168.0.23 7000...第一種方法需要重啟redis生效
第二中方法,在slave節點客戶端配置
$ redis-cli -p 7001slaveof 192.168.0.23 7000第二中方法實時生效,重啟后失效
7000端口代表master,7001端口代表slave
如果是生產環境建議兩種方法都配置
查看主從復制狀態
# master節點redis-cli -p 7000 info...# Replicationrole:masterconnected_slaves:1slave0:ip=192.168.0.23,port=7001,state=online,offset=1737,lag=1master_repl_offset:1737repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:1736...# slave節點redis-cli -p 7001 info...# Replicationrole:slavemaster_host:192.168.0.23master_port:7000master_link_status:upmaster_last_io_seconds_ago:8master_sync_in_progress:0slave_repl_offset:1821slave_priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0...最后特別注意的兩點
- 一定要開啟持久化,防止故障數據丟失
- slave實例建議開啟只讀性質
總結
以上是生活随笔為你收集整理的redis 主从模式_Redis主从模式部署文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jTable保存到mysql_怎么把从数
- 下一篇: linux cmake编译源码,linu