1.应用场景
2.redis的读写速度虽然非常快了,当大量数据访问的时候,还是有点吃力的,主从复制可以分担一些压力,从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。
2.基本原理
3.详细配置
192.168.98.27作为master,192.168.98.111和192.168.98.112作为slave,redis的源码安装过程此处省略,安装完成后需要修改redis.conf配置,其中需要将以下几个地方做修改,找到daemonize 一行修改为yes意思是开启守护进程,找到bind 一行释放出来后添加地址为 0.0.0.0意思是允许任意地址去链接,找到requirepass一行释放后在后面自定义密码,在找到dir一行后将edb存放路径写成绝对路径,可以自定义我这写成/var/lib/redisdb,不然启动redis后rdb的文件就会固定在固定目录不然比较乱,最后在192.168.98.111和192.168.98.112的两个redis.conf里面分别添加 slaveof 192.168.98.27 6379,再添加 masterauth 主密码保存退出!如下图示
4.分别启动主节点和两个从节点的redis
5.登录192.168.98.27主redis
6.在主节点输入info replication查看配置状态显示两个从节点已经生效
7.在两个192.168.98.111和192.168.98.112两个从节点查看主从状态也已经生效
8.向主redis写入数据,flushall清空数据,避免干扰
在111和112上面都可以读取到数据
9.测试向从111和112从库redis写入数据失败,默认slave-read-only yes,如果为no则可以向从写数据
至此,redis主从配置说明完毕,下文为容灾处理部分!
10.容灾处理
当Master服务出现故障,需手动将slave中的一个提升为master, 剩下的slave挂至新的master上(冷处理:机器挂掉了,再处理)
192.168.98.27master模拟故障关闭,将192.168.98.111提升为master
使用slaveof no one,将一台192.168.98.111slave服务器提升为Master (slaveof no one 提升某slave为master)
info replication
在192.168.98.112上面执行SLAVEOF 192.168.98.111 6379
info replication,显示112redis为111主redis的从
将原来坏了的192.168.98.27redis添加到从结构中,重新启动98.27服务器上的redis,执行SLAVEOF 192.168.98.111 6379 然后INFO replication查看信息发现主库只认到112从库成功了,98.27也看到了到主库的状态是down的,原因是在27的redis.conf没有配置masterauth 手动添加后状态成功!
查看状态全部正常!(27和112成功为从库,111为主库)
PS:这种在命令行修改的切换从库命令是临时生效的,要想永久生效必须修改redis.conf配置文件,也就是需要在27和112redis.conf里面改为slaveof 192.168.98.111 6379 masterauth 111redis密码,192.168.98.111的redis.conf 里面之前的slaveof和masterauth可以去掉;总之redis主从就是主库配置文件不用写slaveof和masterauth那两行参数,谁是从库就在从库配置里面写slaveof和masterauth那两行参数,保存退出后永久生效!
原文地址:https://blog.51cto.com/10087093/2480487