我的日常

登录/注册
您现在的位置:论坛 资料库 开源社区 > linux下Redis主从配置
总共48087条微博

动态微博

查看: 1849|回复: 0

linux下Redis主从配置

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-03-25 17:05:46 |只看该作者 |倒序浏览
    一、原理      

    Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点:

          1.master可以有多个slave
          2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构
          3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。
           4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求,比如sort操作可以使用slave来处理。也可以用来做简单的数据冗余
            5.可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。

    下面介绍下主从复制的过程


            当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连 接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命 令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。


    二、应用场景


           假如我们的项目上线后只有一台Redis服务器,并且缓存 了所有的热点数据,现在服务器有宕机隐患需要重启或者直接宕机。当然你会说我们后端还有数据库切换备份呢,但这无形中增加了数据库的查询压力,有可能还会导致数据丢失,在高并发应用中是不可取的。
    所以,这里我们简单的配置两台Redis服务器A ->B ,改造线上项目为 master->slave数据同步机制,即使A挂掉了,我们还可以切换到B。当然B后面还可以连接其他slave。当然你要问了 Redis主从是如何切换的,Redis 2.8版本以后增加了Sentinel监听主服务,在主服务发生故障时能够切换至从服务,将从服务升为主服务来保证故障恢复,用该功能需要在JedisConnectionFactory设置RedisSentinelConfiguration属性,目前Jedis对Redis Sentinel提供支持。





    三、配置


    我这里有两台服务器 ,一台(A) IP为 115.28.240.103 另一台(B) IP为  115.29.142.133, 同属于阿里云linux服务器。


    这里选择 A服务器作为master,那个B服务器就为slave,假设这里两台都安装好了redis。


    1、配置slave服务器很简单,只需要在配置文件(redis.conf)中加入如下配置。
    # slaveof  
    slaveof  115.28.240.103 6379
    # masterauth

    masterauth  123456



    2、测试 slave服务器:
    启动服务 ./redis-server /home/redis-2.8.4/redis.conf&  后台运行,下图所示说明配置好了。


    3、测试连接master服务器 set数据:
    执行一下命令
    ./redis-cli -h 115.28.240.103 -p 6379

    auth 123456



    4、测试连接slave服务器 get数据:

    执行一下命令

    ./redis-cli -h 115.29.142.133 -p 6379

    auth 123456


    可以get到值说明主从配置成功。




    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表