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

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

做主从联系有两种方式

1.slave命令

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

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

在从库上面执行slave

在主库上设置键值

2.配置文件方式(在从库的配置文件redis_6380.conf中加入这两句话)

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

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

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

在主库直接set键值

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

三、复制常见问题

1.读写分离

读流量分摊到从节点

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

2.主从配置不一致

maxmemory不一致:丢失数据

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

3.规避全量复制

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

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

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

4.规避复制风暴

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

。。。

猜你喜欢

转载自www.cnblogs.com/wangcuican/p/12180380.html