Redis主从复制原理以及常见问题
相信很多⼩伙伴都已经配置过主从复制,但是对于redis主从复制的⼯作流程和常见问题很多都没有深⼊的了解。咔咔这次⽤时俩天时间给⼤家整理⼀份redis主从复制的全部知识点。
本⽂实现所需环境
centos7.0
redis4.0
主从复制
⼀、什么是Redis主从复制?
主从复制就是现在有俩台redis服务器,把⼀台redis的数据同步到另⼀台redis数据库上。前者称之为主节点(master),后者为从节点(slave)。数据是只能master往slave同步单向。
但是在实际过程中是不可能只有俩台redis服务器来做主从复制的,这也就意味这每台redis服务器都有可能会称为主节点(master)
下图案例中,我们的slave3既是master的从节点,也是slave的主节点。
先知道这么个概念,更多详解继续查看下⽂。
⼆、为什么需要Redis主从复制?
假设我们现在就⼀台redis服务器,也就是单机状态。
在这种情况下会出现的第⼀个问题就是服务器宕机,直接导致数据丢失。如果项⽬是跟¥占关系的,那造成的后果就可想⽽知。
第⼆个情况就是内存问题了,当只有⼀台服务器时内存肯定会到达峰值的,不可能对⼀台服务器进⾏⽆限升级的。
offset指令是什么意思所以针对以上俩个问题,我们就多准备⼏台服务器,配置主从复制。将数据保存在多个服务器上。并且保证每个服务器的数据是同步的。即使有⼀个服务器宕机了,也不会影响⽤户的使⽤。redis可以继续实现⾼可⽤、同时实现数据的冗余备份。
这会应该会有很多疑问,master跟slave怎么连接呢? 如何同步数据呢? 假如master服务器宕机了呢?别着急,⼀点⼀点解决你的问题。
三、Redis主从复制的作⽤
在上边我们说了为什么使⽤redis的主从复制,那么主从复制的作⽤就是针对为什么使⽤它来讲了。
1. 我们继续使⽤这个图来谈论
2. 第⼀点是数据冗余了,实现了数据的热备份,是持久化之外的另⼀种⽅式。
3. 第⼆点是针对单机故障问题。当主节点也就是master出现问题时,可以由从节点来提供服务也就是slave,实现了快速恢复故障,也
就是服务冗余。
4. 第三点是读写分离,master服务器主要是写,slave主要⽤来读数据,可以提⾼服务器的负载能⼒。同时可以根据需求的变化,添加
从节点的数量。
5. 第四点是负载均衡,配合读写分离,有主节点提供写服务,从节点提供读服务,分担服务器负载,尤其在写少读多的情况下,通过多
个从节点分担读负载,可以⼤⼤提⾼redis服务器的并发量和负载。
6. 第五点是⾼可⽤的基⽯,主从复制是哨兵和集能够实施的基础,因此我们可以说主从复制是⾼可⽤的基⽯。
四、配置Redis主从复制
说了这么多,我们先简单的配置⼀个主从复制案例,然后在谈实现的原理。redis存储路径为:usr/local/redis
⽇志跟配置⽂件存储在:usr/local/redis/data
⾸先我们先配置俩个配置⽂件,分别为f 和 f
修改配置⽂件,主要就是修改端⼝。为了查看⽅便在把⽇志⽂件和持久化⽂件的名字都⽤各⾃的端⼝来做标识。
然后分别开启俩个redis服务,⼀个端⼝为6379,⼀个端⼝为6380。执⾏命令f,然后使⽤redis-cli -p 6380连接,因为redis的默认端⼝就是6379所以我们启动另外⼀台redis服务器直接使⽤f 然后直接使⽤redis-cli直接连接就可以。
这个时候我们就成功的配置了俩个redis服务,⼀台为6380,⼀台为6379,这⾥只是为了演⽰。实际⼯作中是需要配置在俩台不同的服务器的。
1. 使⽤客户端命令⾏启动
我们先得有⼀个概念,就是在配置主从复制时,所有的操作都是在从节点来操作,也就是slave。
那么我们在从节点执⾏⼀个命令为 slaveof 127.0.0.1 6379,执⾏完就代表我们连接上了。
我们先测试⼀下看是否实现主从复制。在master这台服务器上执⾏俩个set kaka 123 和 set master 127.0.0.1,然后在slave6380端⼝是可以成功获取到的,也就说明我们的主从复制就已经配置完成了。但是在实现⽣产环境可不是就这样完事了,后边会在进⼀步对主从复制进⾏优化,直到实现⾼可⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论