天天看點

SpringBoot整合Redis 主從複制_01

主從複制 master slave

核心解決問題:資料備援備份,不能解決故障的自動轉移

主從複制講解:

1.主節點負責寫入操作,從節點負責同步主節點的備援資料,不能寫入

2.當主節點挂掉之後,從節點還是從節點,不能進行故障轉移。

這裡為了友善操作,搭建僞分布式,就是模拟在一台伺服器上,通過修改端口搭建多個redis服務

伺服器ip 端口 節點
192.168.0.114 6379 master
192.168.0.114 6380 slave
192.168.0.114 6381 slave

搭建一主二從示範:

#進入目錄
cd /app/master-slave/conf
#複制2個配置檔案
cp redis.conf redis-6380.conf
cp redis.conf redis-6381.conf

#編輯從節點配置檔案redis-6380.conf
vim redis-6380.conf
92行 port 6379 改為 6380
158行 redis_6379.pid 修改為redis_6380.pid
286行replicaof <masterip> <masterport>改為replicaof 192.168.0.114 6379

#編輯從節點配置檔案redis-6381.conf
vim redis-6381.conf
92行 port 6379 改為 6381
158行 redis_6379.pid 修改為redis_6381.pid
286行replicaof <masterip> <masterport>改為replicaof 192.168.0.114 6379      

啟動redis的3個節點(1主2從)

/app/master-slave/bin/redis-server /app/master-slave/conf/redis.conf
/app/master-slave/bin/redis-server /app/master-slave/conf/redis-6380.conf
/app/master-slave/bin/redis-server /app/master-slave/conf/redis-6381.conf
主:咱們啟動redis是基于配置後天啟動的,是以前面都是通用的,
也可以單獨都複制一份,效果一樣的      

分别啟動redis 3個節點的用戶端

#啟動redis 主節點用戶端
/app/master-slave/bin/redis-cli -h localhost -p 6379      
#主節點記錄檔如下:
[root@localhost conf]# /app/master-slave/bin/redis-cli -h localhost -p 6379
localhost:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.114,port=6380,state=online,offset=196,lag=1
slave1:ip=192.168.0.114,port=6381,state=online,offset=196,lag=1
master_replid:c784bb3d47875dc0d4747d8a67392cacce4dd41c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:196
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:196
localhost:6379>      
#啟動redis 端口為6380用戶端
/app/master-slave/bin/redis-cli -h localhost -p 6380      
#主節點記錄檔如下:
[root@localhost ~]# /app/master-slave/bin/redis-cli -h localhost -p 6380
localhost:6380> info replication
# Replication
role:slave
master_host:192.168.0.114
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:364
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:c784bb3d47875dc0d4747d8a67392cacce4dd41c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:364
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:364
localhost:6380>      
#啟動redis 端口為6380用戶端
/app/master-slave/bin/redis-cli -h localhost -p 6381      
#主節點記錄檔如下:
[root@localhost ~]# /app/master-slave/bin/redis-cli -h localhost -p 6381
localhost:6381> info replication
# Replication
role:slave
master_host:192.168.0.114
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:448
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:c784bb3d47875dc0d4747d8a67392cacce4dd41c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:448
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:448
localhost:6381>      
需求測試:
1.在主節點上set 值 并檢視
2.在從節點擷取主節點set的值
3.登入從節點,嘗試set 值,預測結果,不能執行寫入操作      
#主節點測試記錄檔記錄:
localhost:6379> set a aaa
OK
localhost:6379> get a
"aaa"
localhost:6379>


#slave節點測試記錄檔記錄:
localhost:6380> get a
"aaa"
localhost:6380> set b bbb
(error) READONLY You can't write against a read only replica.
localhost:6380> 


#slave節點測試記錄檔記錄:
localhost:6381> get a
"aaa"
localhost:6381> set c ccc
(error) READONLY You can't write against a read only replica.
localhost:6381>      

繼續閱讀