一、什么是主从复制
一主一从,一主多从
做读写分离(可以设置主写从读),做数据副本,扩展数据性能
一个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(五)——主从做读写分离原理与优化 - Python技术站