0
点赞
收藏
分享

微信扫一扫

7、Redis主从复制(ABB与ABC形式)

Redis集群与高可用

Redis单机服务存在数据和服务的单点问题,而且单机性能也存在着上限,可以利用Redis的集群相关技术来 解决这些问题.

Redis主从复制实验准备

10.0.0.101 为master
10.0.0.102 为slave1
10.0.0.103 为slave2

要求三台redis服务器密码相同,版本一致

配置过程

第一步:
在master上建一个key,用于测试
[root@master ~]#redis-cli -a 123456
127.0.0.1:6379> set name mengfanchao
OK
127.0.0.1:6379> get name
"mengfanchao"

第二步:
1、slave1和slave2成为master的从节点
[root@slave1 ~]#redis-cli -a 123456
127.0.0.1:6379> slaveof 10.0.0.101 6379
OK

[root@slave2 ~]#redis-cli -a 123456
127.0.0.1:6379> slaveof 10.0.0.101 6379
OK

2、slave1和slave2通过master密码验证
127.0.0.1:6379> CONFIG SET masterauth 123456
OK

第三步:
查看是否完成主从复制
1、在slave是否能查看master的key
[root@slave1 ~]#redis-cli -a 123456
127.0.0.1:6379> get name
"mengfanchao"
可以看到

2、在主节点建立新的key,看在slave上是否能查看
[root@master ~]#redis-cli -a 123456
127.0.0.1:6379> set age 27
OK

slave查看
127.0.0.1:6379> get age
"27"

3、slave查看复制状态
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:10.0.0.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5  #每10s做一次io通讯 
master_sync_in_progress:0     #0表示同步完成,1表示正在同步
slave_repl_offset:557
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b77f425446997b9e511c8fa33a5ee415dc335f05  () 
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:557
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:557

以上为命令行做的主从复制,重启redis便失去了主从复制相关信息

修改slave配置文件,做到主从复制的持久化保存

修改slave配置文件
[root@slave1 ~]#vim /apps/redis/etc/redis.conf
replicaof 10.0.0.101 6379    #指向主节点IP和端口号
masterauth 123456            #设置主节点得密码
requirepass 123456           #和masterauth保持一致,用于将来从节点提升主节点用
[root@slave1 ~]#systemctl restart redis.service
slave只能读不能写

删除主从同步

在从节点执行 REPLICAOF NO ONE 指令可以取消主从复制
#取消复制,在slave上执行REPLICAOF NO ONE,会断开和master的连接不再主从复制, 但不会清除slave 上已有的数据
127.0.0.1:6379> REPLICAOF no one

以上是临时修改,完全取消需要修改配置文件

主从复制故障恢复

如主节点出了故障,应该要将一个从节点变成新主
第一步:
slave取消主从同步,从节点会自动切换为主节点
127.0.0.1:6379> REPLICAOF no one
第二步:
修改其他从节点指向新的主节点

实现Redis的级联复制

即实现slave的slave

10.0.0.101 为master
10.0.0.102 为slave1
10.0.0.103 为slave2
要求三台redis服务器密码相同

第一步:
修改slave1配置文件
[root@slave1 ~]#vim /apps/redis/etc/redis.conf
replicaof 10.0.0.101 6379
masterauth 123456
requirepass 123456      
[root@slave1 ~]#systemctl restart redis.service

第二步:
修改slave2配置文件
[root@slave1 ~]#vim /apps/redis/etc/redis.conf
replicaof 10.0.0.102 6379
masterauth 123456
requirepass 123456       
[root@slave1 ~]#systemctl restart redis.service


举报

相关推荐

redis主从复制

Redis 主从复制

Redis —— 主从复制

Redis:主从复制

0 条评论