CentOS7下搭建Redis主從復制


(1).實驗環境

youxi1  192.168.1.6  Master服務器

youxi2  192.168.1.7  Slave服務器

(2).實驗

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

  詳細查看:CentOS7下yum安裝Redis

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

[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服務器上的配置

[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的狀態信息

  查看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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM