天天看點

centos6.8 安裝redis 4.0 搭建主從

centos6.8 安裝redis 4.0 搭建主從

環境:

master:172.17.165.245

slave :172.17.165.230

redis 版本:redis 4.0

1.下載下傳并進行安裝包

[root@iZ2zejbqrpwrmr4mjy0u9fZ ~]#wget http://download.redis.io/releases/redis-4.0.8.tar.gz
[root@iZ2zejbqrpwrmr4mjy0u9fZ ~]#tar zxvf redis-4.0.8.tar.gz  -C /usr/local/
[root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# cd !$
[root@iZ2zejbqrpwrmr4mjy0u9fZ redis-4.0.8]# ls
00-RELEASENOTES  CONTRIBUTING  deps     Makefile   README.md   runtest          runtest-sentinel  src    utils
BUGS             COPYING       INSTALL  MANIFESTO  redis.conf  runtest-cluster  sentinel.conf     tests
[root@iZ2zejbqrpwrmr4mjy0u9fZ redis-4.0.8]#make           

2.修改配置檔案

[root@iZ2zegc312qxcxs61cotxlZ redis-4.0.8]# cp redis.conf  /etc/redis/
[root@iZ2zegc312qxcxs61cotxlZ redis-4.0.8]# cp utils/redis_init_script /etc/init.d/redis
[root@iZ2zejbqrpwrmr4mjy0u9fZ redis]# mv redis.conf  6379.conf
[root@iZ2zegc312qxcxs61cotxlZ ~]# vim /etc/redis/6379.conf
修改守護程序
#daemonize no
#修改為yes
daemonize yes  #Redis預設不是以守護程序的方式運作,可以通過該配置項修改,使用yes啟用守護程序
綁定的主機位址
bind 127.0.0.1 172.17.165.245 #bind後面再添加主機的ip,後面主從複制 從Redis需要通過IP連接配接。
端口号
port 6379
開啟AOF
appendonly yes           

3.修改啟動檔案

REDISPORT=6379
#EXEC=/usr/local/bin/redis-server
EXEC=/usr/local/redis-4.0.8/src/redis-server  #服務端絕對位址
#CLIEXEC=/usr/local/bin/redis-cli
CLIEXEC=/usr/local/redis-4.0.8/src/redis-cli  #用戶端端絕對位址

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"           #配置檔案
#CONF="/etc/redis/redis-master.conf"
case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF &   #背景啟動 
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
      restart)  #自己添加的重新開機動選擇
        if [ -f $PIDFILE ]
        then
                $CLIEXEC -p $REDISPORT shutdown
                $EXEC $CONF
                echo "Waiting for  Reids is restart ..."
        else
                $EXEC $CONF
                #echo "Please use start or stop as first argument"
                echo "Waiting for  Reids is restart ..."
        fi
        ;;
esac           

4.配置主從

從slave上修改配置檔案

[root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# vim /etc/redis/6379.conf
# slaveof <masterip> <masterport>
slaveof 172.17.165.245 6379           

5.主master 上進行檢視狀态

[root@iZ2zegc312qxcxs61cotxlZ ~]# redis-cli 
127.0.0.1:6379>info
...
# Replication
role:master         #節點狀态master
connected_slaves:1  #連結slave數為1
slave0:ip=172.17.165.230,port=6379,state=online,offset=588,lag=0  #slave節點
master_replid:f7a4830f3b523187d959b4929dcb79f6cfca7c37
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:588
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:588
...           

6.從slave 上進行檢視狀态

[root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# redis-cli 
127.0.0.1:6379> info
...
# Replication
role:slave  #節點狀态slave
master_host:172.17.165.245  #連結到master 位址為172.17.165.245
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:140
slave_priority:100
slave_read_only:1
connected_slaves:0      #連結slave的數目為0
master_replid:f7a4830f3b523187d959b4929dcb79f6cfca7c37
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:140
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:140
...           

7.主從同步進行測試

主master 進行設定一個鍵值:

[root@iZ2zegc312qxcxs61cotxlZ redis-4.0.8]# redis-cli 
127.0.0.1:6379> SET test-sync wiwiiwi20180217
OK           

從slave 檢查是否已經自動同步到了從庫:

127.0.0.1:6379> get test-sync
"wiwiiwi20180217"           

可以看到,資料确實是從主庫同步到了從庫。

當一個從資料庫啟動時,會向主資料庫發送SYNC指令,主資料庫收到指令後會開始在背景儲存快照(即RDB持久化過程),并将儲存快照期間接收到的指令緩存起來。當快照完成後,Redis會将快照檔案和緩存的指令發給從資料庫,從資料庫收到資料後,會載入快照檔案并執行緩存的指令。以上過程稱為複制初始化。複制初始化之結束後,主資料庫每收到寫指令時就會将指令同步給從資料庫,進而保證主從資料庫資料一緻,這一過程稱為複制同步階段。           

繼續閱讀