redis主从复制原理和配置

1.应用场景
2.redis的读写速度虽然非常快了,当大量数据访问的时候,还是有点吃力的,主从复制可以分担一些压力,从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。
2.基本原理

3.详细配置
192.168.98.27作为master,192.168.98.111和192.168.98.112作为slave,redis的源码安装过程此处省略,安装完成后需要修改redis.conf配置,其中需要将以下几个地方做修改,找到daemonize 一行修改为yes意思是开启守护进程,找到bind 一行释放出来后添加地址为 0.0.0.0意思是允许任意地址去链接,找到requirepass一行释放后在后面自定义密码,在找到dir一行后将edb存放路径写成绝对路径,可以自定义我这写成/var/lib/redisdb,不然启动redis后rdb的文件就会固定在固定目录不然比较乱,最后在192.168.98.111和192.168.98.112的两个redis.conf里面分别添加 slaveof 192.168.98.27 6379,再添加 masterauth 主密码保存退出!如下图示





4.分别启动主节点和两个从节点的redis

5.登录192.168.98.27主redis

6.在主节点输入info replication查看配置状态显示两个从节点已经生效

7.在两个192.168.98.111和192.168.98.112两个从节点查看主从状态也已经生效


8.向主redis写入数据,flushall清空数据,避免干扰

在111和112上面都可以读取到数据

9.测试向从111和112从库redis写入数据失败,默认slave-read-only yes,如果为no则可以向从写数据

至此,redis主从配置说明完毕,下文为容灾处理部分!
10.容灾处理
当Master服务出现故障,需手动将slave中的一个提升为master, 剩下的slave挂至新的master上(冷处理:机器挂掉了,再处理)
192.168.98.27master模拟故障关闭,将192.168.98.111提升为master

使用slaveof no one,将一台192.168.98.111slave服务器提升为Master (slaveof no one 提升某slave为master)

info replication

在192.168.98.112上面执行SLAVEOF 192.168.98.111 6379

info replication,显示112redis为111主redis的从

将原来坏了的192.168.98.27redis添加到从结构中,重新启动98.27服务器上的redis,执行SLAVEOF 192.168.98.111 6379 然后INFO replication查看信息发现主库只认到112从库成功了,98.27也看到了到主库的状态是down的,原因是在27的redis.conf没有配置masterauth 手动添加后状态成功!

查看状态全部正常!(27和112成功为从库,111为主库)

PS:这种在命令行修改的切换从库命令是临时生效的,要想永久生效必须修改redis.conf配置文件,也就是需要在27和112redis.conf里面改为slaveof 192.168.98.111 6379 masterauth 111redis密码,192.168.98.111的redis.conf 里面之前的slaveof和masterauth可以去掉;总之redis主从就是主库配置文件不用写slaveof和masterauth那两行参数,谁是从库就在从库配置里面写slaveof和masterauth那两行参数,保存退出后永久生效!

原文地址:https://blog.51cto.com/10087093/2480487

时间: 2024-09-29 15:24:44

redis主从复制原理和配置的相关文章

Redis主从复制原理总结

和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步.下图为级联结构. 全量同步Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份.具体步骤如下: -  从服务器连接主服务器,发送SYNC命令: -  主服务器接收到SYNC命名后,开始执行BGSA

MySQL主从复制原理及配置过程

一.Mysql数据库的主从复制原理过程: Mysql的主从复制是一个异步的复制过程,数据将从一个Mysql数据库(master)复制到另一个Mysql数据库(slave),在Master和Slave之间实现整个主从复制的过程是由三个线程参与完成的.其中有两个线程(SQL线程和I/O线程)在Slave端,另外一个线程(I/O线程)在Master端 ,要实现Mysql的主从复制,首先必须打开Master端的binlog记录功能,否则就无法实现.因为整个复制过程实际上就是Slave从Master获取b

基于centos 7的Redis群集原理及配置

博文大纲:一.Redis群集原理二.Redis群集架构细节三.redis-cluster选举四.部署Redis群集环境 关于Redis的性能调优参数的说明,可以参考博文:centos 7之Redis数据库详解及参数调优一.Redis群集原理: 1)Redis集群架构: Redis Cluster采用虚拟槽分区,将所有的数据根据算法映射到0~16384整数槽内 Redis Cluster是一个无中心的结构 每个节点都保存数据和整个集群的状态2)集群角色 Master:Master之间分配slots

redis主从复制原理与优化-高可用

一 什么是主从复制 机器故障:容量瓶颈:QPS瓶颈 一主一从,一主多从 做读写分离 做数据副本 扩展数据性能 一个maskter可以有多个slave 一个slave只能有一个master 数据流向是单向的,从master到slave 二 复制的 配置 2.1 slave 命令 6380是从,6379是主 ? 在6389上执行 ? slave of 127.0.0.1 6379 #异步 slaveof no one #取消复制,不会把之前的数据清除 2.2 配置文件 slaveof ip port

redis+主从复制+集群配置

redis是一个key-value存储系统.和memcached类似,不过redis支持的value类型更多,主要有:string(字符串).list(链表).set(集合).zset(有序集合)和hash(哈希类型).redis和memcached一样,为了保证效率,都是把数据缓存在内存中.区别是redis会周期性的把更新的数据写入磁盘或者把修改的操作写入追加的记录文件,并且在此基础上实现master-slave主从同步. 下面就来实现主从复制和集群,集群是建立在主从复制的基础之上的.首先准备

redis主从复制和sentinel配置高可用

一:redis主从配置1.环境准备 master : 192.168.50.10 6179 slave1: 192.168.50.10 6279 slave2: 192.168.50.10 63792.redis.conf配置文件配置 master port 6179 requirepass 123456 #密码认证,可以不设置 dir "/var/redis/6179" #工作目录,dump.rdb会保留在这个目录slave1 port 6279 slaveof 192.168.50

MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

Technorati 标签: 那你魔鬼 一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读

MySQL主从复制原理及其配置过程

一.MySQL复制原理. 二.MySQL复制配置. 一.MySQL复制原理 1.MySQL复制原理图 复制原理: Slave启动IO Thread和SQL Thread Master启动DumpThread 1.Slave通过IO Thread向Master的Dump Thread发送请求,Master的Dump Thread请求本地的binlog. 2.Master读取本地的binlog,并将读取内容发送给Slave的IO Thread线程. 3.Slave的IO Thread将收到的内容,写

Mysql主从复制原理及配置

1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收