redis的高可用之主从复制
前言:主从复制大家都不会感到陌生,其原理和数据库的主从同步一样,主redis负责处理写操作,从redis则负责处理读操作,从而将读和写给分离开来,降低单台redis的请求压力,并提高redis的处理性能,达到高并发,高性能的状态。
1. 原理
有磁盘化复制:
如下图,master处理所有写请求,slave处理读请求,第一次,salve会请求master将数据的持久化文件(如RDB)发送一份完整的给slave,然后slave读取RDB持久化文件加载数据。当master有新的写请求时,此时会将增加的持久化文件同步一份给slave,让slave做增加的加载,使master和slave的数据达到一致。
无磁盘化复制:
下图为无磁盘化的主从复制,主从之间的数据复制使基于内存和网络,对比有磁盘,其复制速度快。但占带宽,目前处于测试阶段,不建议放在生产环境中使用。如果网络带宽大,或追求复制效率可以采用这种复制方式,直接从内存通过网络进行同步。
注:redis无磁盘化复制开启配置如下图,具体说明可以阅读其说明文档:
2. 环境准备
redis的主从复制有多种搭建方案。如一主一从,一主两从,一主多从,树状模式等。下面我们要搭建的是最后常用的主从复制:一主两从。
三台虚拟机或服务器,全部已经安装完毕redis
主:192.168.101.136
从1:192.168.101.134
从2:192.168.101.135
在每台服务器上,进入redis-cli输入:info replication 可以查看redis服务器的主从状态,如下图:
3. 搭建redis的主从复制
主从复制的搭建,这里只需要修改两台slave的redis的配置文件,如下图:
简单说明:
replicaof 192.168.101.136 6379 #主redis的ip和端口
masterauth 123 #主redis的密码
修改完成后,将两台slave重启,即可。
以上redis的主从复制就配置完成 了。
此时你在任意一台服务器上再次输入 info replication即可看到主从配置信息如下图:
可以看到两台从节点已经和redis进行绑定了。
4. 验证主从复制
在主服务器上进行写:
然后从服务器读:
可以看到当主服务器有数据写入时,从服务器会同时更新数据。
5. 结尾
以上就是redis的高可用之主从复制,其缺点也很明显,当master宕机后,我们的slave并不会选举出新的master,而是会一直等待master的重启或正常运行。此时就会系统的可用性比较差。关于新的master的选举可以通过redis的哨兵模式进行解决,从而达到系统的高可用更进一步。