Linux之redis主從複製
阿新 • • 發佈:2018-12-07
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中會有詳細的報錯資訊