redis主从复制

redis的主从复制:

就是主机数据更新后根据配置和策略,自动同步到备机的master(主)/slave(从)机制,master以写为主,slave以读为主,

作用跟redis集群一样。

怎么样去配置主从复制呢?

    1.首先我们要遵循一个原则:配从(库)不配主(库)

        1.)进入本地6379端口的服务器里杀死之前的所有数据:flushall

        2.)打开三个同192.168.43.185 IP相同的服务器,重命名为80/81/82,因为要开三个端口号为6380/6381/6382的服务器

           

        3.)输入:cd /usr/local/redis/bin/ ,在该文件夹里复制三个 .conf 文件,

              首先,先把redis.conf配置里的右图的yes改成no,

        4.) 然后,输入:cp redis.conf redis_6380.conf,cp redis.conf redis_6381.conf,cp redis.conf redis_6382.conf

              如下图:

         

        5.)输入:vim startall.sh,创建一个startall.sh的文件,里面写入启动命令,方便全部启动:

       

             ./redis-server redis_6380.conf
             ./redis-server redis_6381.conf
             ./redis-server redis_6382.conf

    2.修改配置文件细节

         1.) 修改redis_6380.conf,redis_6381.conf redis_6382.conf文件

             a.修改端口号:

             b.修改pid的指向文件:

             c.添加日志信息:

             d.修改RDB的文件名 方便备份:

   3.启动连接:./redis-cli -p 6380

       

       查看当前库:info replication,是master

   4.在6380里启动连接后输入在从库中配置:slaveof 主库ip 主库端口号SLAVEOF 192.168.43.185 6380

      显示如下变成了奴隶:

     

      6382服务器里也这样写

 

主从复制的常用模式:

        1.一主二仆

            1)如果master意外down掉了,那么slave会原地待命,等待master的出现,这样情况master不会主动出现,需要我们的开发人员手动的去添加master。

                如果原来的master恢复使用,那么原来的slave会继续回来master的管理中。

                如果原来的master恢复不了,我们可以手动的把slave变成master命令,slaveof no one ,然后让所有的从库重新的连接到新的master上。

            2)如果slave意外down掉了,那么重新启动以后就恢复到master状态,跟主服务器断开连接,就是说slave每次重新启动都需要重新去连接master,除非你把这样关系写入redis.conf中

        2.薪火相传

            上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的压力,中途变更转向会清除之前的数据,重新建立拷贝最新的数据。

        3.反客为主

            slaveof no one

复制原理:

        slave启动成功连接到master后会发送一个synchronized(同步)命令,master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。

        全量复制:slave服务器在接收到数据库文件数据后,将其存盘并加载到内存中。

        增量复制:master继续将新的所有收集到的修改命令一次传给slave完成同步,但是只要是重新连接master,一次完全同步将被自动执行。

 

哨兵模式(sentinel):

    我们可以把哨兵模式看成是反客为主的自动版,能够在后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

怎么使用哨兵模式:

    1)在redis目录下创建一个sentinel.conf文件,名字决不能错

    2)vim sentinel.conf

       输入:sentinel monitor 被监控数据库名字(自己起名字)  主机ip 主机端口号 1

       例如:sentinel monitor master6380 192.168.43.123 6380 1

        上面最后一个数字1,是主机挂掉后slave投票看让谁接替成为主机,得票多的自动成为主机

    3)启动哨兵

             ./redis-sentinel sentinel.conf

    

主从复制的缺点:

    由于我们所有的写操作都是先在master上操作,然后同步更新到slave上,所以从master同步到slave机器有一定的延迟,

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

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值