Redis集群搭建及主从复制

集群搭建

说明:由于只有一台机器,所以需要拷贝并修改区分多份配置文件,真实情况下应该是多台机器,就不用修改这些配置了。

  • 拷贝多份redis的配置文件
[root@lijh redis-6.2.5]# cp redis.conf redis6379.conf
[root@lijh redis-6.2.5]# cp redis.conf redis6380.conf
[root@lijh redis-6.2.5]# cp redis.conf redis6381.conf
  • 需要修改的配置

分别取三个端口号为6379、6380、6381,其他配置同理改变。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 开启redis服务
[root@lijh src]# ./redis-server /usr/local/redis-6.2.5/redis6379.conf
[root@lijh src]# ./redis-server /usr/local/redis-6.2.5/redis6380.conf
[root@lijh src]# ./redis-server /usr/local/redis-6.2.5/redis6381.conf

查看进程判断是否开启成功

[root@lijh src]# ps -ef|grep redis
root       7250      1  0 18:36 ?        00:00:00 ./redis-server *:6379
root       7256      1  0 18:36 ?        00:00:00 ./redis-server *:6380
root       7262      1  0 18:36 ?        00:00:00 ./redis-server *:6381
root       7268   7090  0 18:37 pts/0    00:00:00 grep --color=auto redis

主从复制

定义:是指将一台redis服务的数据复制到另一台服务器上,并且规定前者必须是主节点,后者是从节点,也就是说数据只能由主节点复制到从节点上。

  • 主从复制的作用

redis的定位是一个高可用的数据服务器,可是在实际生产环境下,单机的redis服务器是无法满足真正意义上的高可用性的。

第一,单机的redis服务器很容易发生单点故障,即使redis提供了各种持久化的方法来避免数据的丢失,但是物理上的故障(硬盘损毁等)还是无法完全避免的。

第二,如果对单台机器的性能进行纵向拓展,无论是CPU,内存还是磁盘容量都很容易达到瓶颈,无法满足实际需求。

针对这些问题,redis提供了复制(replication)的功能,通过"主从(一主多从)"和"集群(多主多从)"的方式对redis的服务进行水平扩展,用多台redis服务器共同构建一个高可用的redis服务系统。
读写分离:通常情况下,写操作在主机上进行,读操作在从机上进行。

  • 主从复制原理

1.从服务器初始化
  当从服务器启动时,会向主服务器发送SYNC命令,请求同步数据。主服务器接收到消息之后,进行RDB持久化,并生成一个快照文件;与此同时,主服务器会将生成快照期间新执行的命令缓存起来。在快照文件生成完毕之后,主服务器将RDB快照文件和缓存下来的命令一并发送给从服务器,从服务器首先载入接收到的RDB快照文件,接着执行被缓存下来的新命令,完成主从数据的初始化同步操作。
2.从服务器保持同步
  从服务器在同步完成之后,主服务器接收到的所有命令都会异步的发送给从服务器用来保持主从数据的一致性。
3.从服务器故障后处理

当从服务器崩溃之后,重启之后进行初始化,会自动的同步主服务器的数据。在redis的2.8版本之后,redis采用了"增量复制"的方式优化了从服务器的初始化同步数据的过程。
4.主服务器故障后处理

当主服务器崩溃之后,首先需要手动的选择一个从服务器升级为主服务器(需要手动调整所有相关的从服务器),然后启动之前已经崩溃的主服务器作为从服务器回到系统中。

可以看到,redis在主服务器崩溃之后需要繁琐的人工干预来恢复服务,特别是在主数据库禁止了持久化之后,上述步骤不能错乱,否则会导致主数据库重启后恢复了错误数据,进而导致从数据库也同步错误数据这一灾难性后果。为此,redis提供了哨兵机制,用于自动化的监控和维持分布式redis系统的良好运转。

  • 主从复制实现

没有进行任何配置的时候,每个redis服务都是主节点:
在这里插入图片描述
要实现主从复制,那么必须得确定谁是主节点。当选出A服务是主节点,这时需要在所有从节点上配置自己的主节点(也就是在从节点上标记-A节点是主节点),配置方法如下:
在从节点的客户端执行命令:

127.0.0.1:6380> slaveof 127.0.0.1 6379
OK

:如果设置了密码,需要先执行命令 auth 来验证。
并且需要在从机的配置文件中配置主节点的密码:
在这里插入图片描述

执行完成后,再次查看此节点就变成了从节点:
在这里插入图片描述
而主节点中已经连接了两个从节点(如果主节点显示连接的从节点是0,并且从节点显示主机的状态是down,那么很有可能是没有在从机的配置文件中配置主节点的密码):
在这里插入图片描述
上面的做法是在命令行上实现主从关系的绑定的,没有被记录到磁盘中,一旦从节点dump机重启,他们的主从关系就不存在了,在从节点配置文件中直接配置主节点后才能永久保持他们的主从,如下:
在这里插入图片描述

说明:以上仅为阐述主从之间的关系以及如何实现,在实际开发中会使用哨兵模式来解决dump机后的主机选取问题。。

  • 全量复制和增量复制

此时已经搭建好了集群,从机可以得到主机复制过来的数据(实际上不是复制数据,而是复制生成数据的命令在从机上执行,分为:全量复制、和增量复制)。
全量复制:每次主机和从机建立新连接的时候,从机要获得主机的全部数据,这时就要复制全部的数据,交全量复制。
增量复制:主机和从机的数据已经同步过了,某时刻主机读入新的数据,此时需要同步到从机,就只需要复制新的数据就可以了,叫做增量复制。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值