redis 非关系性数据库 ->主从复制 (详情)

Redis的主从复制功能可以提升读取性能和系统伸缩性,通过设置多个slave服务器,实现数据冗余和读写分离。在主从复制中,master可继续处理请求,而slave在初次同步时会阻塞。可以配置并联或串联的主从结构,以缓解master压力。当master故障,slave可手动设置为主,实现故障切换。但默认情况下,主机重启仍为master,从机重启后需重新配置主从关系。
摘要由CSDN通过智能技术生成

主从复制

Redis支持将数据同步到多台slave上,这种特性对提高读取性能非常有益

  1. master可以有多台slave
  2. 除了多个slave连到相同master外,slave也可以连接到其它slave形成图状结构
  3. 主从复制不会阻塞master,也就是说当一个或多个slave与master连接进行复制时,master可以继续处理客户端发来的请求,相反slave在初次同步数据时则会阻塞,不能处理客户端请求
  4. 主从复制可以用来提高系统的伸缩性,我们可以用多个slave专门负责客户端的读请求,可以做数据冗余
  5. 可以在master禁用数据持久化,只需要注释掉master配置文件redis.conf的save配置,然后只在slave配置持久化
  1. 准备三台服务器6380、6381、6383,因为是模拟,需要复制三份配置文件,并分别更改端口号,pid文件名字(windows版暂无),dump.rdb名字,Appendonly关掉
  2. 分别启动这三个服务,在windows版演示 redis-server ridis.windows6380.cof
  3. 分别连接这三台服务 redis-cli -p 6380
  4. 我们可以在三台服务上执行命令”info replication”,可以发现三台服务的角色都是master

  5. 我们可以使用“slaveof <ip> <port> ”设置主从关系,这三台服务可以设置成两种关系:并联or串联。slaveof 127.0.0.1 6381
  6. 我们先来设置并联(一主二仆),即6382和6383都是6381的slave
  7. 然后在master上写数据,再slave上取数据,结果是可以取到另外,在slave上测试写数据,结果是不可以的,slave上不允许写数据串联(薪火相传),去中心化,即6380是6381的slave,6381是6382的slave,操作上和刚才类似,这里就不演示了。假如,有100台slave的话,那么master就压力很大了,所以串联可以舒缓master的压力,但是也带来的更大的延时

    综上,通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。

    问题:

    1)如果主机死掉了,默认情况下,主机重新启动,角色还是主机

    2)如果从机死掉了,默认情况下,从机重新启动,角色变成没有独立主机了,需要重新配置,除非从机在redis.conf文件里配置了,否则从机不会重新连接主机

  8. 反客为主
  9. 在6380上执行“slaveof no one”
  10. 在6381上重新配置“slaveof 127.0.0.1 6380”
  11. 刚刚提到了,当master死机的时候,重写启动还是master,现在是希望当master死机的时候,让某一台从机变成主机,这里是,让6380变成主机,那么需要操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值