zoukankan      html  css  js  c++  java
  • redis分布式(主从复制)

    Redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。
       
    Redis的复制原理:
    本身就是Master发送数据给slave,只是第一次连接是Slave向Master发送同步请求,其它的都是Master主动向Slave发送数据。


    Redis主从复制的过程:
    当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的自动尝试重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上的数据库中。

    master后续收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动尝试重新建立连接。如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。


    Redis主从复制特点:
    1.master可以拥有多个slave
    2.多个slave不但可以连接同一个master外,还可以连接到其它slave
    3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
    4.提高系统的伸缩性


    配置slave服务器(master无需特别配置,只配置slave即可):
    vi编辑配置文件
    [root@martin etc]# vi /usr/local/redis/etc/redis.conf

    1.在约116行找到 # slaveof <masterip> <masterport>  这里是主服务器的IP和端口(从属于哪个master的哪个port)
       slaveof 192.168.1.26 6379

    2.在约124行找到 # masterauth <master-password>    这里是主服务器的授权密码(如果master没有设置密码此处则不用配置)
       masterauth 123456

    3.重启slave服务器,重新登录到slave

    4.查看服务器角色(身份):
       redis 127.0.0.1:6379> info
       ......
       role:slave                                   #角色
       master_host:192.168.1.26          #master主机
       master_port:6379                      #master端口
       master_link_status:up                #master连接状态:up同步;down异步
       master_last_io_seconds_ago:4    #最后一次同步在见秒钟前
       master_sync_in_progress:0
       slave_priority:100
       db0:keys=4,expires=0                #数据库有几个key,过期key的数量

    总结:照此方法,此slave机还可以被充当为其它服务器的master。

  • 相关阅读:
    接口和抽象类
    TSQL向自增字段中插入值
    字符串驻留备忘
    SQL Like中的逗号分隔符
    TSQL的一点小备忘
    ADO.NET与ADO
    JavaScript Office文档在线编辑备忘
    位运算练习:求多数的大数、二进制数中1的个数
    Vimeo反反复复地重生死亡。
    海底浓烟,低分辨率测试。
  • 原文地址:https://www.cnblogs.com/martinzhang/p/3408590.html
Copyright © 2011-2022 走看看