文章目錄
- 是什么
- 能干嘛
- 怎么玩
- 案例演示
- 復制原理和工作流程
- 復制的缺點
是什么
- 官網地址:https://redis.io/docs/management/replication/
- Redis 復制機制用于將數據從一個主節點(Master)復制到一個或多個從節點(Slave),以實現數據冗余、負載均衡和故障恢復。
- 一句話:就是主從復制,master 以寫為主,slave 以讀為主,當 master 數據變化的時候,自動將新的數據異步同步到其他的 slave 數據庫
能干嘛
- 讀寫分離
- 容災恢復
- 數據備份
- 水平擴容支撐高并發
怎么玩
-
配從(庫)不配主(庫):在 Redis 主從復制中,“配從不配主”是指只需要配置從節點(Slave)指向主節點(Master),而不需要配置主節點指向從節點。
- 主節點的主要職責是處理寫操作和數據的變更。主節點不需要知道從節點的存在,它只需要將自己的數據變更傳播給所有連接的從節點。這種設計簡化了主節點的邏輯,使其更專注于數據寫入和同步。
- 從節點是主動連接到主節點的,而不是主節點去連接從節點。從節點通過
SLAVEOF
命令或配置文件中的slaveof
指令,明確指定自己要復制的主節點。這種設計使得從節點可以動態地加入或離開復制拓撲,而不影響主節點的運行。
-
權限細節,重要
- master 如果配置了 requirepass 參數,需要密碼登錄
- 那么 slave 就要配置 masterauth 來設置校驗密碼,否則的話 master 會拒絕 slave 的訪問請求
-
基本操作命令
info replication
,可以查看復制結點的主從關系和配置信息replicaof 主庫IP 主庫端口
,一般寫入進 redis.conf 配置文件內,重啟后生效slaveof 主庫IP 主庫端口
- 每次與 master 斷開之后,都需要重新連接,除非你配置進了 redis.conf 文件
- 在運行期間修改 slave 節點的信息,如果該數據庫已經是某個主數據庫的從數據庫,那么會停止和原主數據庫的同步關系轉而和新的主數據庫同步,重新拜碼頭
slaveof no one
,使當前數據庫停止與其他數據庫的同步,轉成主數據庫,自立為王
案例演示
-
架構說明:
- 一個 Master 兩個 Slave,三臺虛擬機,每臺都安裝 redis
- 拷貝多個
redis.conf
文件:redis6379.conf
redis6380.conf
redis6381.conf
-
小口訣:
- 三臺虛擬機需要能相互
ping
通且需要注意防火墻配置 - 三大命令
- 主從復制:
- replicaof 主庫IP 主庫端口
- 配從(庫)不配主(庫)
- 改換門庭:slaveof 新主庫IP 新主庫端口
- 自立為王:slaveof no one
- 主從復制:
- 三臺虛擬機需要能相互
-
修改配置文件細節操作
-
開啟daemonize yes:讓程序以守護進程(daemon)模式運行。守護進程是在后臺獨立運行的進程,不與任何終端關聯,通常用于服務器或長時間運行的服務。
-
注釋掉
bind 127.0.0.1
:在 Redis 配置文件 redis.conf 中,bind 參數用于指定 Redis 服務器監聽的網絡接口(IP 地址)。默認情況下,Redis 只綁定到 127.0.0.1,這意味著它只能接受來自本機的連接。注釋掉后,Redis 會監聽所有可用的網絡接口(0.0.0.0),允許來自任何 IP 地址的連接,Redis 可以從其他機器訪問,前提是防火墻或安全組允許。 -
protected-mode no
:在 Redis 配置文件 redis.conf 中,protected-mode 是一個安全特性,用于保護 Redis 實例免受未授權訪問。當你將 protected-mode 設置為 no 時,意味著禁用了這一保護模式。如果 protected-mode 設置為 yes(默認值),Redis 會進入保護模式。在保護模式下,如果 Redis 沒有設置密碼(requirepass)并且沒有明確綁定到所有網絡接口(bind 配置),Redis 只會接受來自 127.0.0.1(本地回環接口)的連接。這是為了防止 Redis 在沒有適當安全配置的情況下暴露在外部網絡中。 -
指定端口
-
指定當前工作目錄,dir
-
pid文件名字,pidfile:在 Redis 配置文件 redis.conf 中,pidfile 參數用于指定 Redis 進程 ID(PID)文件的路徑和名稱。PID 文件是一個文本文件,其中包含 Redis 服務器進程的進程 ID(PID)。這個文件通常用于管理和監控 Redis 進程。
-
log文件名字,logfile:在 Redis 配置文件 redis.conf 中,logfile 參數用于指定 Redis 日志文件的路徑和名稱。Redis 會將運行時的日志信息(如啟動信息、錯誤信息、調試信息等)寫入該文件,方便排查問題和監控運行狀態。
-
requiredpass
:在 Redis 配置文件 redis.conf 中,requirepass 參數用于設置 Redis 的訪問密碼。啟用密碼后,客戶端在連接 Redis 時必須提供正確的密碼才能執行操作。這是一個重要的安全特性,用于防止未授權訪問。 -
dump.rdb 名字
-
aof 文件,appendfilename
-
從機訪問主機的通行密碼 masterauth,必須配置,從機需要配置,主機不用
-
-
常用 3 招
- 一主二仆
- 薪火相傳
- 反客為主