CentOS7下搭建Redis主從複製

(1).實驗環境html

youxi1  192.168.1.6  Master服務器node

youxi2  192.168.1.7  Slave服務器redis

(2).實驗vim

 1)兩臺服務器上yum安裝Redis,啓動並設置開機自啓服務器

  詳細查看:CentOS7下yum安裝Redisless

 2)修改Master服務器上的配置tcp

[root@youxi1 ~]# vim /etc/redis.conf
bind 0.0.0.0  //第69行,設置監聽地址。0.0.0.0表示監聽全部地址
requirepass 123456  //第507行,設置認證密碼
[root@youxi1 ~]# systemctl restart redis

  若是防火牆是開啓狀態,記得添加端口號測試

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=6379/tcp && firewall-cmd --reload
success
success

 3)修改Slave服務器上的配置ui

[root@youxi2 ~]# vim /etc/redis.conf
replicaof 192.168.1.6 6379  //第286行,設置master的IP地址和端口號
masterauth 123456  //第293行,設置master的認證密碼
[root@youxi2 ~]# systemctl restart redis

 4)查看master和slave的狀態信息spa

  查看master的狀態信息

[root@youxi1 ~]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> info replication
# Replication
role:master  //這是一臺master
connected_slaves:1  //鏈接slave服務器的數量
slave0:ip=192.168.1.7,port=6379,state=online,offset=350,lag=1  //slave服務器的信息
master_replid:e26e1e0953261c81b2ca2de08ce8ebda264eeabf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:350
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:350

  查看slave的狀態信息

[root@youxi2 ~]# redis-cli
127.0.0.1:6379> info replication
# Replication
role:slave  //這是一臺slave
master_host:192.168.1.6  //master服務器的IP地址
master_port:6379  //master服務器的端口號
master_link_status:up  //鏈接狀態
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:112
slave_priority:100
slave_read_only:1  //成爲slave服務器後,只讀
connected_slaves:0
master_replid:e26e1e0953261c81b2ca2de08ce8ebda264eeabf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:112
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:112

 5)測試

  在master服務器上建立一個鍵值,而後到slave上查看

[root@youxi1 ~]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set user youxi
OK

[root@youxi2 ~]# redis-cli
127.0.0.1:6379> get user
"youxi"

  這就成功了。

(3).主從複製高級配置參數

  CentOS7下yum安裝Redis已經記載了,這裏複製一下,便於查看。

/*第218到220行,快照存儲策略,存到磁盤的持久化策略
*第一個數字是單位時間,單位爲秒;第二個數字是鍵值發生變化的次數
* 例如第一個,900秒內至少發生1次鍵值變化,則作一次快照(持久化)
* 第二個就是,300秒內至少發生10次鍵值變化,則作一次快照(持久化)
* 全部條件是並列關係,根據不一樣的鍵值變化選擇使用規則
*/
save 900 1
save 300 10
save 60 10000
//第235行,在進行快照備份時,一旦發生錯誤是否中止,默認yes便可
stop-writes-on-bgsave-error yes
//第241行,指定RDB文件是否壓縮。yes表示壓縮,會消耗CPU資源
rdbcompression yes
/*第250行,是否對RDB文件作校驗碼檢測。
*此項定義在redis啓動時加載RDB文件是否對文件檢查校驗碼,在redis生成RDB文件是會生成校驗信息,在redis再次啓動或裝載RDB文件時,是否檢測校驗信息。
*若是檢測的狀況下會消耗時間,會致使redis啓動時慢,可是可以判斷RDB文件是否產生錯誤。
*/
rdbchecksum yes
//第253行,RDB文件名稱
 dbfilename dump.rdb
//第263行,RDB文件存放的路徑
dir /var/lib/redis
 
//第286行,定義Master服務器的IP和端口,主從複製的配置信息
# replicaof <masterip> <masterport>
//第293行,定義Master服務器的密碼,主從複製的配置信息
# masterauth <master-password>
//第308行,當從端在主從複製過程當中與主端斷開鏈接,yes表示繼續提供服務,即便數據可能不是最新的;no表示對請求返回錯誤信息
replica-serve-stale-data yes
//第324行,從端只讀
replica-read-only yes
//第355行,默認不使用diskless(無磁盤)同步方式
repl-diskless-sync no
//第367行,diskless(無磁盤)方式進行數據傳遞以前會有一個時間的延遲,以便從端可以進行到待傳送的目標隊列中,默認5秒
repl-diskless-sync-delay 5
//第373行,從端向主端發送ping的時間間隔,默認10秒
# repl-ping-replica-period 10
//第385行,設置超時時間
# repl-timeout 60
/*第400行,是否啓用TCP_NODELAY。
* 若是啓用則會使用少許的TCP包和帶寬去進行數據傳輸到從端,速度較慢;
* 若是不啓用則使用較多的帶寬進行數據傳輸,速度較快。
*/
repl-disable-tcp-nodelay no
/*第413行,設置backlog的大小。backlog是一個緩衝區,在從端失聯時存放要同步到從端的數據。
* 所以當從端重連時,通常是不須要徹底同步的。backlog越大,從端能夠失聯的時間就越長(相對來講)
*/
# repl-backlog-size 1mb
//第426行,一段時間後,從端尚未連上master,那麼backlog(緩衝區)的內存將被釋放。0表示永不釋放,默認3600秒
# repl-backlog-ttl 3600
//第441行,從端的優先級設置,數字越小優先級越高。主端故障會根據優先級高的從端來進行恢復。若是設置的是0,那麼該從端永遠不會被選中
replica-priority 100
//第457到458行,當主端的可用從端小於3個或網路延遲島嶼10秒時,主端拒絕接收用戶的寫請求。
# min-replicas-to-write 3
# min-replicas-max-lag 10
相關文章
相關標籤/搜索