redis配置最簡單的主從複製集羣

redis的主從複製

主節點數據更新後根據配置和策略,自動同步到從節點,Master以寫爲主,Slave以讀爲主。

redis主從複製的作用:

  1. 讀寫分離,使數據庫能支撐更大的併發。
  2. 做數據的熱備,作爲後備數據庫,主數據庫服務器故障後,可切換到從數據庫
    繼續工作,避免數據丟失。
  3. 當 I/O 訪問頻率過高,單機無法滿足,此時做多庫的存儲,降低磁盤 I/O 訪問
    的頻率,提高單個機器的 I/O 性能。

redis主從複製的配置

本章節配置的redis主從複製,只是在一臺機器上兩個不同端口上配置master和slave,實現一個最簡單的redis主從複製架構。

安裝redis

redis下載地址:https://redis.io/download,這裏我下載的是redis-5.0.4(只有redis3.0以上的版本才能搭建redis集羣)。

下載之後解壓

sudo tar -xzf redis-5.0.4.tar.gz -C /usr/local
cd redis-5.0.4
sudo make

在make命令編譯時候報出一個bug:error:jemalloc/jemalloc.h:No such file or directory。

原因:Redis 2.4版本之後,默認使用jemalloc來做內存管理,因爲jemalloc被證明解決fragmentation problems(內存碎片化問題)比libc更好。報出這個錯誤原因是沒有jemalloc而只有libc。

解決辦法:指定libc做redis的內存管理,在make命令上指定參數。

sudo make MALLOC=libc 

make完後 redis-5.0.4/src目錄下會出現編譯後的redis服務程序redis-server,還有用於測試的客戶端程序redis-cli,兩個程序都位於安裝目錄 src 目錄下。

複製redis.conf

redis安裝完畢後可以把原來自帶的redis.conf改名爲redis1.conf,用來做Master-redis啓動時指定的配置文件;從redis1.conf複製出一份redis2.conf的配置文件,用來做Slave-redis啓動時指定的配置文件。

cd /usr/local/redis-5.0.4
mv redis.conf redis1.conf
cp redis1.conf redis2.conf

配置redis.conf

修改配置文件

vi redis1.conf

修改如下配置項

#後端模式運行
daemonize yes  

#指定pid文件,把pidfile生成到有權限的目錄下
pidfile /usr/local/redis-5.0.4/redis1.pid 

修改配置文件

vi redis2.conf

修改如下配置項,並加入slaveof 127.0.0.1 6379

port 6380

#後端模式運行
daemonize yes  

#指定pid文件,把pidfile生成到有權限的目錄下
pidfile /usr/local/redis-5.0.4/redis_6380.pid

#指定redis集羣的主節點
slaveof 127.0.0.1 6379

啓動redis主從實例

啓動兩個redis實例客戶端,啓動時指定配置文件(一個主節點,一個從節點)

cd /usr/local/redis-5.0.4/src
./redis-server ../redis1.conf
./redis-server ../redis2.conf

啓動redis客戶端,連接主節點

./redis-cli -h 127.0.0.1 -p 6379

輸入info指令

info

在Replication顯示項可以看出,連接的此redis實例role(角色)爲master,有一個Slave(從節點)與之連接,Slave的ip和端口爲127.0.0.1和6380。

在這裏插入圖片描述

測試redis主從是否配置成功

連接master(127.0.0.1:6379的redis實例)

./redis-cli -h 127.0.0.1 -p 6379

在master中設置鍵值,並取值

set name "atuo"
get name

在這裏插入圖片描述

連接slave(127.0.0.1:6380的redis實例)

./redis-cli -h 127.0.0.1 -p 6380

在slave上取出在master上設置的鍵的值(取值成功)

get name

在這裏插入圖片描述

我們發現master和slave已經實現了數據的同步

而此時我們若想在slave上設置鍵值,是會報錯的,可見redis的主從複製實現了讀寫分離

set age 3

在這裏插入圖片描述

在這裏我們只是在一臺機器上演示了一下配置redis主從複製的一個最簡單的模型,而在真正的應用開發中,redis的主從複製配置肯定是分開在不同的機器上的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章