redis 主從複製 replication

參考鏈接

redis官網

主從複製運行依靠三個主要機制:

  • 當一個 master 實例和一個 slave 實例連接正常時, master 會發送一連串的命令流來保持對 slave 的更新,以便於將自身數據集的改變複製給 slave , :包括客戶端的寫入、key 的過期或被逐出等等。
  • 當 master 和 slave 之間的連接斷開之後,因爲網絡問題、或者是主從意識到連接超時, slave 重新連接上 master 並會嘗試進行部分重同步:這意味着它會嘗試只獲取在斷開連接期間內丟失的命令流。
  • 當因爲故障原因無法同步部分數據時,slave會全量同步一遍

redis複製的事實

redis默認使用異步複製
一個master可以擁有多個slave
slave 可以接受其他的slave連接

安全性

在使用 Redis 複製功能時的設置中,強烈建議在 master 和在 slave 中啓用持久化。當不可能啓用時,例如由於非常慢的磁盤性能而導致的延遲問題,應該配置實例來避免重置後自動重啓。因爲一旦master重啓了,因爲沒有持久化,master的是從一個空數據集開始的,其他salve回去試圖與他同步,這個slave也會被清空

配置

master配置

# 地址
bind 127.0.0.1 
# 端口
port 6379
# 後臺運行
daemonize yes
# db數量
databases 20
# rdb 文件名
dbfilename dump_master.rdb
# 當前redis工作的目錄 其實可以是  ./
dir /root/redis_conf/redis_master
# 開啓aof持久化方式
appendonly yes
 # 每一秒aof記錄一次
appendfsync everysec
# 日誌文件
logfile ./6379.log
# rdb 持久化開啓
save 900 1
save 300 10
save 60 10000

slave 配置

slave1

bind 127.0.0.1
port 6380  # 與master端口不一樣
daemonize yes
pidfile "./redis.pid"
logfile "./redis.log"
dbfilename "dump.rdb"
# 當前redis工作的目錄 其實可以是  ./
dir "/root/redis_conf/redis_slave1"
# 你要同步的master
slaveof 127.0.0.1 6379
save 900 1
save 300 10
save 60 10000

slave2

bind 127.0.0.1
port 6381 # 兩個slave就是端口不一樣
daemonize yes
pidfile "./redis.pid"
logfile "./redis.log"
dbfilename "dump.rdb"
dir "/root/redis_conf/redis_slave2"
save 900 1
save 300 10
save 60 10000
# 你要同步的master
slaveof 127.0.0.1 6379

其實配置就是在slave的配置上加個 slaveof ip port 就行

  • $ netstat -lntp 看看redis是否啓動了 因爲這裏的master port是6379 如果原來已經啓動了,把原來的redis殺掉
  • 當前進程
    在這裏插入圖片描述
    先創建好文件 此時應有3個文件一個master兩個slave, 我這裏有三個slave,做演示使用兩個slave就行了
    log 存放redis示例的日誌文件
    pid 存放redis示例的pidfile
    在這裏插入圖片描述
  • 啓動master
    啓動後會產生日誌文件以及aof文件,dump文件等會也會產生
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 啓動兩個 slave
    在這裏插入圖片描述
  • 查看同步信息
    info replication

6080slave信息

在這裏插入圖片描述
role
在這裏插入圖片描述

6379master信息

在這裏插入圖片描述

在 slave 進行寫入操作會error
需要在master中寫入
在這裏插入圖片描述
master 寫入操作
在這裏插入圖片描述
可以看到 兩個slave都能得到key

只讀性質的 slave

自從 Redis 2.6 之後, slave 支持只讀模式且默認開啓。redis.conf 文件中的 slave-read-only 變量控制這個行爲,且可以在運行時使用 CONFIG SET 來隨時開啓或者關閉。
如果slave想進行寫入操作怎麼搞

改變這個變量
在這裏插入圖片描述
我們可以看到 role 爲slave 也可以set操作
在這裏插入圖片描述

發佈了50 篇原創文章 · 獲贊 9 · 訪問量 3441
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章