zoukankan      html  css  js  c++  java
  • 【转】Redis实现主从复制(Master&Slave)

             由于前段时间公司项目比较赶,一直抽不出时间写博客,今天偷空写一篇吧。前面给大家讲解了单机版redis的基本操作,现在继续给大家讲解一下Redis的进阶部分,主从复制和读写分离。

    一、Master&Slave是什么?

             也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机

    master/slaver机制,Master以写为主,Slave以读为主。

    二、它能干嘛?

           1、读写分离;

           2、容灾恢复。

    三、怎么玩?

           1、配从(库)不配主(库);

           2、从库配置:slaveof [主库IP] [主库端口];

               补充:每次slave与master断开后,都需要重新连接,除非你配置进redis.conf文件;

                          键入info replication 可以查看redis主从信息。

           3、修改配置文件细节操作

                 - 拷贝多个redis.conf文件

                   

                 - 指定端口

                   

                 - 开启daemonize yes

                   

                 - Pid文件名字

                   

                 - Log文件名字

                   

                 - Dump.rdb名字

                   

            4、常用3招

                  - 一主二仆

        

                      一个Master,两个Slave,Slave只能读不能写;当Slave与Master断开后需要重新slave of连接才可建立之

               前的主从关系;Master挂掉后,Master关系依然存在,Master重启即可恢复。

               - 薪火相传

      

                     上一个Slave可以是下一个Slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了

               链条中下一个slave的Master,如此可以有效减轻Master的写压力。如果slave中途变更转向,会清除之前的数据,重新

               建立最新的。

               - 反客为主

                           当Master挂掉后,Slave可键入命令 slaveof no one使当前redis停止与其他Master redis数据同步,转成

                  Master redis。

    四、复制原理

           1、Slave启动成功连接到master后会发送一个sync命令;

           2、Master接到命令启动后的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master

                将传送整个数据文件到slave,以完成一次完全同步;

           3、全量复制:而slave服务在数据库文件数据后,将其存盘并加载到内存中;

           4、增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步;

           5、但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。

    五、哨兵模式(sentinel)

           反客为主的自动版,能够后台监控Master库是否故障,如果故障了根据投票数自动将slave库转换为主库。一组sentinel能

           同时监控多个Master。

           使用步骤:

           1、在Master对应redis.conf同目录下新建sentinel.conf文件,名字绝对不能错;

           2、配置哨兵,在sentinel.conf文件中填入内容:

                 sentinel monitor 被监控数据库名字(自己起名字) ip port 1

                 说明:上面最后一个数字1,表示主机挂掉后slave投票看让谁接替成为主机,得票数多少后成为主机。

          3、启动哨兵模式:

                命令键入:redis-sentinel  /myredis/sentinel.conf

               注:上述sentinel.conf路径按各自实际情况配置

    六、复制的缺点

                延时,由于所有的写操作都是在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定

           的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使得这个问题更加严重。

     

     转自:https://www.cnblogs.com/richiewlq/p/8569848.html

     

  • 相关阅读:
    免费的视频、音频转文本
    Errors are values
    Codebase Refactoring (with help from Go)
    Golang中的坑二
    Cleaner, more elegant, and wrong(msdn blog)
    Cleaner, more elegant, and wrong(翻译)
    Cleaner, more elegant, and harder to recognize(翻译)
    vue控制父子组件渲染顺序
    computed 和 watch 组合使用,监听数据全局数据状态
    webstorm破解方法
  • 原文地址:https://www.cnblogs.com/tinyj/p/9874105.html
Copyright © 2011-2022 走看看