0
点赞
收藏
分享

微信扫一扫

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>

从上面,可以得出结论:
主节点master负责写入操作,从节点负责同步主节点的冗余数据,但是,不能执行写入操作。


举报

相关推荐

Redis —— 主从复制

Redis:主从复制

redis主从复制

Redis 主从复制

0 条评论