centos6.8 安裝redis 4.0 搭建主從
阿新 • • 發佈:2018-02-11
entos 取數 cas ras isp role while tar.gz con 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會將快照文件和緩存的命令發給從數據庫,從數據庫收到數據後,會載入快照文件並執行緩存的命令。以上過程稱為復制初始化。復制初始化之結束後,主數據庫每收到寫命令時就會將命令同步給從數據庫,從而保證主從數據庫數據一致,這一過程稱為復制同步階段。
centos6.8 安裝redis 4.0 搭建主從