55 redis主從復制之理論簡介
定義
Redis 主從復制(Master-Slave Replication)是 Redis 提供的一種數據冗余和高可用機制,可以讓一個 Redis 主節點的數據復制到一個或多個從節點,實現讀寫分離、容災備份等功能。
-
主節點(Master):
-
支持讀寫操作。
-
會將寫操作傳播到所有從節點。
-
-
從節點(Slave):
-
只能讀,默認不支持寫(除非配置為可寫)。
-
會從主節點同步數據,保持一致。
-
主從復制,master以寫為主,Slave以讀為主.當master數據變化的時候,自動將新的數據異步同步到其它slave數據庫。
作用
- 讀寫分離
- 容災恢復
- 數據備份
- 水平擴容支撐高并發
怎么玩
配從庫不配主庫:只在從庫上配置主從關系,從庫自動連接主庫。你不需要在主庫上做任何配置,只需要在從庫上配置主節點的地址和端口,Redis 就能建立主從同步。
權限細節:在從庫上配置主節點的地址和端口,Redis 就能建立主從同步。
master如果配置了requirepass參數【主節點開啟了密碼認證】,需要密碼登陸那么slave就要配置masterauth來設置校驗密碼,否則的話master會拒絕slave的訪問請求。masterauth
是 Redis 從節點連接主節點時用的認證信息。
基本操作命令
info replication? ? ? ?
????????建立主從關系后,可以查看復制節點的主從關系和配置信息
replicaof 主庫IP 主庫端口
????????建立主從復制關系。一般寫入redis.conf配置文件內。當前 Redis 實例會連接到指定的主節點,開始全量同步,并接收寫入命令的同步。例如:REPLICAOF 127.0.0.1 6379
slaveof 主庫IP 主庫端口
????????建立主從復制關系,但每次與master斷開之后,都需要重新連接,除非你配置進redis.conf文件【使用replicaof】
? ? ? ? 用于在運行期間修改slave節點的信息。如果該數據庫已經是某個主數據庫的從數據庫,那么會停止和原主數據庫的同步關系轉而和新的主數據庫同步,重新拜碼頭
slaveof no one
????????取消當前 Redis 實例的從庫身份,使其退回為主庫(master)。停止從其他主庫同步數據。這在主庫宕機后,手動切換從庫為主庫時很有用。
52 redis主從復制之演示架構
一個Master兩個Slave:3臺虛機,每臺都安裝redis
拷貝多個redis.conf文件:redis6379.conf、redis6380.conf、redis6381.conf
前提:三邊網絡相互ping通且注意防火墻配置
三大命令
主從復制:在從庫配置的redis.conf文件中配置?replicaof 主庫IP 主庫端口
改換門庭:若在配置文件中寫好了要復制的主庫,此時想改復制的主庫。可以使用slaveof 新主庫IP 新主庫端口
自立為王:取消當前 Redis 實例的從庫身份,使其退回為主庫(master)
57 redis主從復制之配置細節
修改配置文件細節操作
redis6379.conf為例,步驟【前提將redis.conf文件復制到/myredis下】
1. 開啟daemonize yes
2. 注釋掉bind 127.0.0.1
3. protected-mode no
4.指定端口 port 6379
????????【在操作系統層面,一個端口(比如 6379)在同一臺機器上只能被一個 Redis 實例綁定。因此從機,主機 的端口號不能相同。】
5. 指定當前工作目錄,dir /myredis
6. pid文件名字,pidfile? ?默認的不需要修改
7.log文件改名字,logfile "/myredis/6379.log"? ? ??
8. 設置requirepass?開啟密碼認證
9. 改dump.rdb名字
10.開啟aof ?aof文件,appendfilename【步驟可選非必須】
11. 從機訪問主機的通行密碼masterauth,必須【僅需從機配置】
從機配置