Redis主從復制
主機資料更新后根據配置和策略, 自動同步到備機的 master/slaver 機制,Master 以寫為主,Slave 以讀為主,主從復制節點間資料是全量的,
作用:
-
讀寫分離,性能擴展
-
容災快速恢復
上圖將主服務器復制了3份從服務器,主服務器進行寫操作,從服務器進行讀操作,讀寫分離,減少壓力
復制原理
-
Slave 啟動成功連接到 master 后會發送一個 sync 命令;
-
Master 接到命令啟動后臺的存盤行程,同時收集所有接收到的用于修改資料集命令,在后臺行程執行完畢之后,master 將傳送整個資料檔案到 slave,以完成一次完全同步,
-
全量復制:slave 服務器在接收到資料庫檔案資料后,將其存盤并加載到記憶體中,
-
增量復制:Master 繼續將新的所有收集到的修改命令依次傳給 slave,完成同步,
-
但是只要是重新連接 master,一次完全同步(全量復制) 將被自動執行,
模擬復制操作
①首先我們創建1個檔案夾叫myredis
mkdir myredis
②復制redis.conf到myredis中
cp /opt/redis-6.2.10/redis.conf myredis/redis.conf

③由于我們是一臺服務器,所以模擬的話,需要配置3份redis.conf,啟動3個埠,分別配置redis6379.conf,redis6380.conf,redis6381.conf,
redis6379.conf
使用命令vi redis6379.conf寫入以下內容
include /myredis/redis.conf
pidfile /var/run/redis6379.pid
port 6379
dbfilename dump6379.rdb
masterauth 你的redis密碼(如果你有設定的話,沒有設定密碼這行不用加)
然后redis6380.conf和redis6381.conf跟上面一樣操作,只是埠號改成對應的即可,
④啟動3臺redis服務
redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf
使用ps -ef | grep redis查看結果

但目前3個沒有主從區分,可以使用info replication查看是否是主從關系
我們先連接6379這臺服務
redis-cli -p 6379
然后使用info replication,結果如下:

role:master就代表這臺服務是主機,connected_salves:0代表主機下面的從機數量為0臺
⑤將6380和6381這兩臺服務改成6379的從機
我們連接6380服務器,執行以下命令
slaveof 127.0.0.1 6379
這句話代表將此服務器變成6379的從服務器,當然ip地址填寫你實際的,這里因為是本機所以填寫127.0.0.1,6381服務器也做這個操作,這里就不重復寫了
然后來到6379這臺主機,執行info replication查看資訊

可以看到從服務器的數量變成了2,具體的從服務器的ip和埠也顯示出來了,
⑥測驗主服務器寫,從服務器讀
我們在6379主服務器寫入1個key

在6380和6381中查看


此時我們就完成了主從復制
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/545640.html
標籤:NoSQL
下一篇:Redis 資料結構
