精华内容
下载资源
问答
  • redis主从模式和哨兵模式redis主从模式和哨兵模式主从模式原理全量同步增量复制主从同步策略先部署redis环境在主上操作在从上操作哨兵模式哨兵模式配置文件关闭主上的服务 redis主从模式和哨兵模式 主从模式 原理 ...

    redis主从模式和哨兵模式

    主从模式

    原理

    Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,保证主数据库的数据内容和从数据库的内容完全一致。Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。

    全量同步

    Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:

    • 从服务器连接主服务器,发送SYNC命令;
    • 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
    • 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
    • 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
    • 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
    • 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

    增量复制

    Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。 增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

    主从同步策略

    Redis主从同步策略主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

    先部署redis环境

    • 主ip:20.0.0.10
    • 从ip:20.0.0.11 20.0.0.12 20.0.0.13

    先解压缩包(一主三从同时进行)

    tar zxvf redis-5.0.4.tar.gz
    cd redis-5.0.4/
    make
    cd
    ln -s /usr/local/redis/bin/* /usr/local/bin/
    cd redis-5.0.4/utils/
    ./install_server.sh 
    netstat -anpt | grep redis
    cd

    在主上操作

    [root@client1 ~]# vi /etc/redis/6379.conf 
    
    70	bind 0.0.0.0 #修改监听地址为0.0.0.0(在实验环境),实际建议绑定从服务器IP地址
    137	daemonize yes #开启守护进程
    172	logfile /var/log/redis_6379.log #修改日志文件目录
    264	dir /var/lib/redis/6379 #修改工作目录
    700	appendonly yes #开启AOF持久化功能
    [root@server1 ~]# /etc/init.d/redis_6379 restart #重启服务

    在从上操作

    和主上修改一致,需要多修改一个IP和端口
    [root@client1 ~]# vi /etc/redis/6379.conf
    287	replicaof 20.0.0.10 6379

    在这里插入图片描述

    从主上来查看
    在这里插入图片描述

    哨兵模式

    哨兵模式配置文件

    [root@client1 ~]# vi redis-5.0.4/sentinel.conf 
    17	protected-mode no  #关闭保护模式
    26	daemonize yes #指定sentinel为后台启动
    36	logfile "/var/log/sentinel.log" #指定日志存放路径
    65	dir "/var/lib/redis/6379" #指定数据库存放路径
    84	sentinel monitor mymaster 20.0.0.11 6379 2  #至少几个哨兵检测到主服务器故障了,才会进行故障迁移
    113	sentinel down-after-milliseconds mymaster 3000 #判定服务器down掉的时间周期,默认30000毫秒(30秒)
    146	sentinel failover-timeout mymaster 100000 #故障节的的最大超时时间为180000180秒)
    把配置文件直接拷贝:
    scp redis-5.0.4/sentinel.conf root@20.0.0.11:/root/redis-5.0.4
    scp redis-5.0.4/sentinel.conf root@20.0.0.12:/root/redis-5.0.4
    scp redis-5.0.4/sentinel.conf root@20.0.0.13:/root/redis-5.0.4
    

    后台运行程序(所有pc机)

    [root@client1 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [1] 60069
    [root@client2 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [1] 47300
    [root@client3 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [1] 52210
    [root@glt4 ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    [1] 59081
    [root@client1 ~]# ps aux | grep sentinel
    root      60070  0.2  0.2 153836  4688 ?        Ssl  15:34   0:00 redis-sentinel *:26379 [sentinel]
    root      60083  0.0  0.0 112676   976 pts/1    S+   15:35   0:00 grep --color=autosentinel
    [1]+  完成                  redis-sentinel redis-5.0.4/sentinel.conf
    

    查看哨兵模式

    [root@client1 ~]# redis-cli -h 20.0.0.10 -p 26379 info sentinel
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=20.0.0.10:6379,slaves=3,sentinels=4

    关闭主上的服务

    [root@client1 ~]# ps -ef | grep redis
    root      60070      1  0 15:34 ?        00:00:12 redis-sentinel *:26379 [sentinel]
    root      60839      1  0 16:41 ?        00:00:00 /usr/local/bin/redis-server 0.0.0.0:6379
    root      60853  16647  0 16:42 pts/1    00:00:00 grep --color=auto redis
    [root@client1 ~]# kill -9 60839
    [root@client1 ~]# redis-cli -h 20.0.0.10 -p 26379 info sentinel
    # Sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=20.0.0.13:6379,slaves=3,sentinels=4

    在这里插入图片描述

    展开全文
  • Redis主从模式和哨兵模式

    Redis的主从模式

    Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。
    为了分担读压力,Redis支持主从复制,保证主数据库的数据内容和从数据库的内容完全一致。
    Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。

    全量同步

    Redis全量复制一般发生在Slave初始化阶段,这时slave需要将Master上的所有数据都复制一份。
    具体步骤如下:

    从服务器连接主服务器,发送SYNC命令;
    主服务器接收到SYNC命名后,开始执行BGSAVE 命令生成RDB 文件并使用缓冲区记录此后执行的所有写命令;
    主服务器BGSAVE 执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
    从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
    主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令
    从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令

    增量复制

    Redis增量复制是指Slave 初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
    增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

    Redis主从同步策略

    主从刚刚连接的时候,进行全量同步;
    全同步结束后,进行增量同步。当然,如果有需要,slave在任何时候都可以发起全量同步。
    redis策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

    主从部署

    环境

    主1:20.0.0.10
    从1:20.0.0.14
    从1:20.0.0.15

    先给三台机器安装redis
    按以下步骤安装

    tar zxvf redis-5.0.4.tar.gz
    
    cd redis-5.0.4/
    
    make && make install PREFIX=/usr/local/redis
    
    ln -s /usr/local/redis/bin/* /usr/sbin/
    
    cd utils/
    
    ./install_server.sh
    
    netstat -anpt | grep 6379	#查看服务是否成功开启
    

    主:配置文件修改如下

    vi /etc/redis/6379.conf 
    bind 0.0.0.0  		#修改监听地址为0.0.0.0(在实验环境使用)
    appendonly yes		#开启AOF持久化功能
    daemonize yes 		#开启守护进程
    logfile /var/log/redis_6379.log #修改日志文件目录
    dir /var/lib/redis/6379			#修改工作目录
    

    从:配置文件修改如下

    vi /etc/redis/6379.conf 
    replicaof 20.0.0.11 6379  	#同步master节点IP和端口
    bind 0.0.0.0  				#修改监听地址为0.0.0.0(在实验环境使用)
    appendonly yes 				#开启AOF持久化功能
    daemonize yes 				#开启守护进程
    logfile /var/log/redis_6379.log	#修改日志文件目录
    dir /var/lib/redis/6379			#修改工作目录
    

    在这里插入图片描述
    重启服务

    [root@gw utils]# /etc/init.d/redis_6379 restart
    Stopping ...
    Waiting for Redis to shutdown ...
    Redis stopped
    Starting Redis server...
    

    验证

    查看日志

    [root@gw utils]# tail -f /var/log/redis_6379.log
    

    在这里插入图片描述

    验证

    登录到主redis查看信息

    [root@gw utils]# redis-cli 
    127.0.0.1:6379> info replication
    
    

    在这里插入图片描述

    哨兵模式

    哨兵模式原理

    哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。所以整个运行哨兵的集群的数量不得少于3个节点。

    哨兵模式的作用

    监控

    不断的检查master和slave是否正常运行。
    master存活检测、master与slave运行情况检测

    通知(提醒)

    当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。

    自动故障转移

    断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址

    注:

    哨兵也是一台redis服务器,只是不提供数据服务

    哨兵的启动依赖于主从模式,所以须把主从模式安装好的情况下再去做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的redis工作节点是否正常,当master出现问题的时候,因为其他节点与主节点失去联系,因此会投票,投票过半就认为这个master的确出现问题,然后会通知哨兵间,然后从slaves中选取一个作为新的master。

    配置哨兵模式

    [root@gw ~]# vim redis-5.0.4/sentinel.conf
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    启动哨兵模式
    先启master,再启slave

    [root@gw ~]# redis-sentinel redis-5.0.4/sentinel.conf &
    
    # &符号为后台启动
    
    [root@gw ~]# ps aux | grep redis
    root      20837  0.1  0.6 159468 11324 ?        Ssl  01:27   0:01 /usr/sbin/redis-server 0.0.0.0:6379
    root      21009  0.2  0.4 153836  7908 ?        Ssl  01:43   0:00 redis-sentinel *:26379 [sentinel]
    root      21014  0.0  0.0 112676   984 pts/1    S+   01:43   0:00 grep --color=auto redis
    

    在这里插入图片描述

    查看哨兵信息

    [root@gw ~]# redis-cli -h 20.0.0.10 -p 26379 info Sentinel
    

    在这里插入图片描述

    效果验证

    关闭master上redis-server

    [root@gw ~]# ps aux | grep redis
    root      20837  0.1  0.6 159468 11324 ?        Ssl  01:27   0:01 /usr/sbin/redis-server 0.0.0.0:6379
    root      21009  0.2  0.4 153836  7908 ?        Ssl  01:43   0:00 redis-sentinel *:26379 [sentinel]
    root      21014  0.0  0.0 112676   984 pts/1    S+   01:43   0:00 grep --color=auto redis
    
    #杀掉redis进程
    [root@gw ~]# kill 20837
    

    在这里插入图片描述

    验证结果

    查看日志

    [root@gw ~]# tail -f /var/log/sentinel.log
    

    在这里插入图片描述

    进入redist查看哨兵信息

    [root@gw ~]# redis-cli -p 26379 INFO Sentinel
    

    在这里插入图片描述

    展开全文
  • 主从模式 主节点用于服务,从节点用于数据备份(不能跳过主节点直接给从节点写入),在主节点关机后,从节点可变为主节点替代已关闭的主节点提供服务。 为了保持主从节点数据一致性,在每次给主节点写入数据后,都会...

    这篇是我在csdn上写的第一篇博客,对前几天在听的那节Redis课程的记录、总结。

    主从模式

    主节点用于服务,从节点用于数据备份(不能跳过主节点直接给从节点写入),在主节点关机后,从节点可变为主节点替代已关闭的主节点提供服务。
    为了保持主从节点数据一致性,在每次给主节点写入数据后,都会给从节点做一次数据更新。

    不足1:从节点变为主节点需要人工手动修改redis.properties配置,有点不方便

    不足2:主从模式写入能力有限(因为在单机模式下,且每次给主节点写入数据,都要给从节点更新),当从节点变多时,每个从节点都要更新,会花费更多的时间,效率会变慢。

       这时可采用树形结构,主节点只需更新一层从节点,后面的从节点由从节点负责更新,提高更新效率。
    

    哨兵模式

    哨兵模式改善了主从模式的第一个不足。
    结构:相对主从模式在结构上在客户端和节点中多了哨兵
    原理:在多个哨兵运行的时候会一直ping所有节点,当master主节点挂了后,哨兵会检测出客户端到这几个从节点最快的节点,自动修改配置文件,把这个从节点切换成主节点,无需人工干预。
    注意点:哨兵必须为奇数个,如3个哨兵(选举问题、投票问题)

    展开全文
  • Redis学习之路(三)之Redis主从和哨兵模式 1.redis.conf中dir指定的目录如果不存在,需要先创建,不然启动失败,在日志可以看出来。 2.如果redis有密码,主从密码需要一样(其它暂不知,所以不折腾)。需要在...

    这个博主这篇文章已经写的很好了,清晰明了,简单易懂,我是2020年11月17日跟着搭的,主从和哨兵都可以成功。中间有点小问题,不过你们看完补充就可以搭建成功。
    链接如下:转自
    Redis学习之路(三)之Redis主从和哨兵模式

    1.redis.conf中dir指定的目录如果不存在,需要先创建,不然启动失败,在日志可以看出来。
    在这里插入图片描述
    2.如果redis有密码,主从密码需要一样(其它暂不知,所以不折腾),主节点也需要在redis.conf配置masterauth 123456(主节点密码),不然主挂掉后会有问题。另外需要在sentinel.conf中配置:
    在这里插入图片描述
    3.其实哨兵模式就是在主从模式上加个哨兵,所以搭建完主从,再放个哨兵就行。

    展开全文
  • 一、Redis主从模式配置 1.1、案例拓扑图 1.2、环境说明 主机名称 IP****地址 redis****版本角色说明 master 20.0.0.10 redis 5.0.7(主) slave1 20.0.0.20 redis 5.0.7(从) slave2 20.0.0.30 ...
  • 一、Redis主从模式配置 环境 Redis安装:所有服务器均需要安装 1 [root@master ~]# tar zxf redis-5.0.7.tar.gz 2 [root@master ~]# cd redis-5.0.7/ 3 [root@master redis-5.0.7]# make -j2 4 [root@master redis...
  • Redis主从架构搭建 实验逻辑图如下: 1.在三台Redis服务器上源码安装Redis 超链接>> 安装教程 2.Redis主从配置 Redis主服务器的配置如安装教程中所示 Redis从服务器的配置文件只需要多修改下面一行 replicaof...
  • 一、Redis主从模式配置 1.1、案例拓扑图 1.2、环境说明 主机名称 IP地址 redis版本角色说明 master 20.0.0.10 redis 5.0.7(主) slave1 20.0.0.20 redis 5.0.7(从) slave2 20.0.0.30 redis 5.0.7...
  • 主从模式Redis系统中,从数据库在整个系统中起到了数据 冗余备份 读写分离的作用,但是当数据库遇到异常中断服务后,我们只能通过手动的方式选择一个从数据库来升格为主数据库,显然这种方式很麻烦需要人工...
  • 但是这么分类很不严谨,哨兵模式,单独使用是没有意义的,哨兵的作用有两个: 监控:监控主节点从节点是否正常运行 提醒:当被监控的某个Redis节点出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,391
精华内容 556
关键字:

redis主从模式和哨兵模式

redis 订阅