Redis 主从复制
常见的主从形式
第三种是因为slave太多,都从master同步数据,master IO压力很大,所以拿一部分slave也作为master。
一个slave只能有一个master,一个master可以有多个slave。
主从复制不会阻塞redis服务器,redis服务器在主从复制的同时仍可以处理客户端请求。
主从复制的作用
- 数据冗余(数据备份)
- 读写分离:从slave读取数据、master负责数据的写操作,提高服务器性能
- 负载均衡:多个从节点都负责读,可使用nginx进行读的负载均衡
- 高可用:master出现问题,可使用一个slave作为master;部分slave出现问题,其它slave可用
全量复制、偏移量
slave第一次连接master后,会从master复制全部数据,称为全量复制。
之后每次从master同步,都只复制偏移量(offset,距离上一次同步,期间做的修改)。如果偏移量复制失败,则尝试进行全量复制。
当然,如果有需要,slave 在任何时候都可以发起全量同步。
redis主从同步配置
有2种方式:配置文件方式、命令方式。
redis 5.0之后的版本用replicaof代替了slaveof,虽然在5.0中slaveof还能用(向下兼容),但早晚要被取消,尽量用replicaof。
此处以5.0版本为例,若使用的是5.0之前的版本,把所有的replicaof都换成slaveof即可。
要模拟的话,在VMware上克隆虚拟机,就有多个Linux了,不必修改使用的端口号。
如果在一个虚拟机上模拟(使用多个redis服务器),将之前的redis复制多份,放到/usr/local/redis下,重命名为redis1、redis2....并修改redis.conf中的端口号、各种文件保存位置。
如何查看redis的版本?
cd到redis的bin目录,以下4句命令任选一句执行:
./redis-cli -v ./redsi-cli --version #全称是2根- ./redis-server -v ./redis-server --version
配置文件方式(推荐)
修改redis.conf中的配置。
1、master的配置
replicaof、masterauth的配置要注释掉。
master宕机后,把某个slave的replicaof配置注释掉,作为新的master,再把其它slave指向此节点。
设置slave只读(读写分离)。
其实这些都是默认值,看一下只是怕之前改过。
看一下有没有设置密码。
如果做了修改,需重启redis。
2、slave的设置
设置一下master的ip、port,如果master设置了密码,此处还需要写上master的密码。
重启下redis生效。
连上master,看下主从复制信息:
info replication
连接的slave的个数,各slave的ip、port、state、偏移量都可以看到。
那个replid即replication id,每次复制完都会用replid打一个标记复制至此,距上一replid之间的内容就是偏移量(增量)。
我们随便set一个键值对,比如set user hasagei
连上slave,同样的方式看下:
master的信息、本slave的信息都可以看到,包括slave是否只读、偏移量等等。
有个参数是connected_slaves,是本节点的从节点个数(层叠,从节点也可以作为主节点),如果有,也会列出各从节点的信息。
get一下刚才在master中设置的key,能获取到值;
set一个键值对,报错,即只读。
命令方式(了解即可)
(1)连接到要做为主节点的redis服务器
replicaof no one
使之成为主节点
config set replica-read-only yes
设置slave只读
也可以先查看,不符合要求再设置:
config get replica-read-only
(2)连接到要作为slave的redis服务器
replicaof no one
可能之前就是某个master的从属,先去掉杂七杂八的主人。
replicaof 192.168.1.7 6379 #master的ip、port
缺点:
- 配置不是永久性的,只在本次连接期间有效,下次还需要配置,麻烦
- 如果master设置了密码,则连不上
也可以手动同步:
sync #马上执行主从同步
相关文章
- redis实战笔记(1)-第1章 初识Redis
- Redis 面试题 - 收藏版 (持续更新、吐血推荐)
- Another Redis Desktop Manager 链接redis,redis集群链接后用显示不全的问题
- 基于redis的点赞功能设计
- redis存在大量脏页问题的追查记录
- 110分布式电商项目 - Redis集群(主从复制)
- Redis开发运维实践开发者设计规范之客户端推荐
- 《Redis官方文档》主从复制
- redis 密码配置
- Redis——Lettuce连接redis集群
- 2W字!详解20道Redis经典面试题!(珍藏版)
- redis相关知识点
- Redis开发 - 1. 认识redis
- 最快的内存数据库横空出世,比 Redis 快 25 倍,Star 数飙升
- Redis(主从复制,哨兵模式、集群)概述及部署
- 哨兵+redis主从部署架构-docker部署
- 【Redis数据结构 序】使用redis-py操作Redis数据库
- Golang 实现 Redis(6): 实现 pipeline 模式的 redis 客户端
- Redis 主从复制与哨兵
- 使用acl网络通信库的 redis c++ 模块开发 redis 应用
- windows redis配置并开机启动
- asp.net 网站使用redis 存储session
- (高级篇)php结合redis实现高并发下的抢购、秒杀功能
- Redis_redis分布式锁-SETNX
- Redis学习---Redis操作之List
- 【Redis】中的一些坑(二)——「主从复制」篇
- redis代理对比,redis架构对比,redis predixy安装和功能测试
- 曹工说Redis源码(6)-- redis server 主循环大体流程解析
- 曹工说Redis源码(4)-- 通过redis server源码来理解 listen 函数中的 backlog 参数
- redis的主从复制,读写分离,主从切换