1. 程式人生 > >Linux之redis主從複製

Linux之redis主從複製

redis叢集中的資料庫複製就是通過主從同步實現的

主節點Master把資料分發給節點Salve

主從同步的好處在高可用, redis節點有冗餘設計

 

redis主從同步的原理

1. 從伺服器向主伺服器傳送 SYNC 命令。
2. 接到 SYNC 命令的主伺服器會呼叫BGSAVE 命令,建立一個 RDB 檔案,並使用緩衝區記錄接下來執行的所有寫命令。
3. 當主伺服器執行完 BGSAVE 命令時,它會向從伺服器傳送 RDB 檔案,而從伺服器則會接收並載入這個檔案。
4. 主伺服器將緩衝區儲存的所有寫命令傳送給從伺服器執行。


-------------
1、在開啟主從複製的時候,使用的是RDB方式的,同步主從資料的
2、同步開始之後,通過主庫命令傳播的方式,主動的複製方式實現
3、2.8以後實現PSYNC的機制,實現斷線重連

 

環境準備

準備兩臺裝有redis的伺服器,或兩個redis例項

檢視各個redis的角色資訊

預設redis的角色就是master

 

配置主庫master

主庫其實沒有什麼需要配置的, 但是需要注意一下幾點

1. protected-mode no    # 關閉
2. 檢視主庫有沒有設定密碼  # 如果主庫設定密碼, 從庫中需要指定主庫的密碼
3. bing 192.168.1.1 # 繫結自己的IP, 不要使用127.0.0.1迴環地址

 

配置從庫Salve

設定從庫的方式有兩種, 一種是在redis命令列修改, 另一種是配置檔案中修改

 

方式一: 在配置檔案中(推薦使用)

[[email protected] 04:15 /data/6379]# cat /opt/redis-4.0.10/conf/redis-v1.conf 
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dir /data/6379
slaveof 192.168.233.130 6379  # 主庫的ip + 埠    
masterauth 123456    # 主庫的密碼, 出庫有密碼的時候才需要配置

再次檢視從庫的角色資訊, 看到master_link_status為on

 

 方式二, 命令列設定

進入從庫的命令列

[[email protected] 04:21 /data/6379]# redis-cli 
127.0.0.1:6379> ping
PONG

在命令列設定要同步的主庫

127.0.0.1:6389> SLAVEOF 192.168.233.130 6379

檢視從庫和主庫的連線狀態也是on, 就表示成功

 

測試主從同步

在主庫中去set一個鍵值, 然後在從庫中去檢視是不是同步的, 

 

 

遇到問題怎麼辦

去檢視redis的log, 在redis.log中會有詳細的報錯資訊