redis主从复制原理和使用介绍

A:主从复制的作用:

1、数据副本(对数据在别的服务器上面进行备份,且从服务器中的数据将会清空并备份主服务器中的数据)。

2、拓展读的性能(客户端访问服务器的时候访问从节点,从而减小对主节点的访问压力)。

存在的问题:

①、主节点出现故障的时候,需要手动故障转移,使得在从节点slave中产生一个父节点master

②、写能力和存储能力受限(只能对主节点master进行写和存储的操作)

B:简单介绍主从复制:master(主服务器)| slave(从服务器)

1、一个master可以有多个slave。

2、一个slave只能有一个master。

3、数据流向只能从master流向slave,单向。

C:主从复制的实现方式:

1、命令:(优点:无需重启,缺点:不便于管理)

slaveof ip port:设置ip地址为当前服务器中的从服务器,从而实现主从关系。

slaveof no one:取消当前服务器的所有主从关系,不允许有成为任何服务器的从属服务器,但是之前备份的数据不会被删除,只是说之后产生的数据从服务器不会进行备份。

2、配置:(在redis启动之前进行配置,优点:统一配置,缺点:需要重启)

slaveof ip port:设置从节点的ip和端口

slave-read-only yes:设置节点为只读模式,这样会产生节点直接的数据不同步,即从服务器设置为只读模式,主服务器修改了数据,从服务器能同步备份数据,但是如果从服务器修该了数据,主服务不会产生备份效果。

D:可通过info replication命令查看当前服务器的状态

E:可通过命令info server查看当前服务器的信息,譬如RunId:该Id是每次重启服务器的时候都会变的,该Id的功能是在全量复制等的功能实现时从服务器通过run_Id来访问主服务器数据是否发生变化。也可通过偏移量(master_repl_offset和offset的比对)来观察主从节点之间的数据是否同步,

F:全量复制的过程

1、slave:通过自动发送psync ? -1给master(“?”代表runId,-1代表偏移量offset)

2、master传输runId和offset给slave

3、slave保存master传输的数据

4、master数据改动时,master自动bgsave保存数据

5、master向slave发送RDB文件和缓冲文件(该缓冲是在写命令的时候redis执行send buffer命令发送到redis_back_buffer并将命令进行存储的一个)//redis_back_buffer为缓冲空间。

6、slave将清除旧的数据,并加载RDB文件

G:全量复制的开销:

1、bgsave的时间

2、RDB文件网络传输时间

3、从节点RDB文件加载时间

4、从节点数据删除时间

5、RDB文件加载完成后节点重启的时候可能的AOF文件重写时间

H:部分复制的实现过程

I:开发和运维中出现的问题

1、读写分离:读流量数据的时候读的能力分摊到从节点,减少客户端对主节点的访问压力。

可能遇到的问题:①:复制数据延迟,②:读到过期的数据,③从节点故障

2、配置不一致:①:maxMemory不一致:会丢失数据,②:数据结构优化参数,内存不一致。

3、规避全量复制:

①、第一次全量复制(不可避免),可使用小主节点(maxmemory不要设置过大起到减小内存开销的功能)或者在服务器访问低峰的时候运行。

②、 节点运行ID不匹配(主节点重启的时候运行ID会发生变化),可使用故障转移,例如哨兵或集群

③、复制挤压缓冲区不足(网络中断,部分复制无法满足),可增大复制缓冲区的配置rel_backlog_size(默认为1M),或者网络增强。

4、规避复制风暴

①、单主节点复制风暴(主节点重启,所有从节点进行复制):可使用更换复制拓扑方式,即使得一个从节点slave成为master

②、单机器复制风暴(主机器中为都为master该机器发生宕机,则从节点产生大量的全量复制),可分散主节点到多个机器中。

//主从复制的实现过程

①、复制两个redis-conf文件到新目录下

       博主复制到(/opt/redis/data)下了。主从两个文件名分别为(redis-6379.conf和redis-6380.conf)

②、修改配置文件

以上为配置主服务器的配置文件如上截图,

而从服务器只需要在以上修改的配置文件的基础上将6379更改为6380即可

并且配置以下截图的参数更改为 上的IP和端口即可,

③、

启动主服务器:redis-server redis-6379 .conf

连接主服务器:redis-cli -p 6379

④、

启动从服务器:redis-server redis-6380 .conf

连接从服务器:redis-cli -p 6380

⑤、主从复制配置完成,可通过在主服务器进行数据的操作,退出后再服务器上可以进行查询操作,但是从服务器上不能进行数据的操作,因为主服务器已经设置从服务器为只读状态。

⑥、可根据进程方式查询两个服务器是否已经启动

ps -ef | grep redis-server

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值