Redis——主从做读写分离原理与优化

Posted 能扛事,就是最了不起的才华!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis——主从做读写分离原理与优化相关的知识,希望对你有一定的参考价值。

一、什么是主从复制

一主一从,一主多从

做读写分离(可以设置主写从读),做数据副本,扩展数据性能
一个maskter可以有多个slave,一个slave只能有一个master
数据流向是单向的,从master到slave

二、复制到配置

启动两个服务端:

示例:在阿里云服务器上创建两个redis服务端配置文件(注意配置文件中的端口不同),使用不同的配置文件启动,用两个客户端分别连接。

一个服务端配置文件是:redis_6379.conf,另一个服务端配置文件是:redis_6380.conf

启动两个服务端命令redis-server redis_6379.conf        redis-server redis_6380.conf          #分开执行

查看是否开启两个服务端:ps -ef|grep redis-server

启动之后可以通过可视化工具连接

两个客户端连接:(分别通过不同端口连接)

 

做主从联系有两种方式

方式一:直接执行slave命令

6379是主,6380是从
在6380客户端执行下面命令
slaveof 127.0.0.1 6379 #异步

#如果想取消复制,主从库就没关联了,但是之前的数据不会清除 slaveof no one

在主库上设置键值

在从库上面执行slaveof绑定主库

 

方式二:配置文件方式

主库配置文件

daemonize yes
port 6379
bind 0.0.0.0
protected-mode no
dir "/root/data"
logfile "6379.log"

在从库的配置文件redis_6380.conf中加入这两句话

slaveof ip port #配置主节点ip和端口
slave-read-only yes #从节点只读,因为可读可写,数据会乱

关掉之前的redis服务端连接,重新启动

重新启动之后,在客户端不用再执行slave命令

在主库直接set键值

在从库就能直接获取,但是从库不能写入数据,只能读取

三、复制常见问题

1.读写分离

读流量分摊到从节点

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

2.主从配置不一致

maxmemory不一致:丢失数据

数据结构优化参数:主节点做了优化,从节点没有设置优化,会出现一些问题

3.规避全量复制

第一次全量复制,不可避免:小主节点,低峰(夜间)

节点运行id不匹配:主节点重启(运行id变化)

复制挤压缓冲区不足:增大复制缓冲区大小,rel_backlog_size

4.规避复制风暴

单主节点复制风暴,主节点重启,所有从节点复制

 

。。。

以上是关于Redis——主从做读写分离原理与优化的主要内容,如果未能解决你的问题,请参考以下文章

Redis启用主从模式做读写分离

Redis早期的主从架构原理分析,早期如何实现读写分离的?

redis主从同步与读写分离

MySQL主从复制及读写分离实际部署与验证

MySQL主从复制及读写分离实际部署与验证

谈谈redis主从架构的原理