zoukankan      html  css  js  c++  java
  • Redis主从复制

    概念:执行数据更新后根据配置和策略,自动同步到备机的master/slaver机制,master以写为主,slave以读为主。

    主要用于读写分离、容灾恢复。

    配从(库)不配主(库)
    从库的配置:slaveof 主库ip 主库端口
    每次与master断开之后,都需要重新连接,除非配置进redis.conf文件。

    配置:

    • 拷贝多个redis.conf文件,形成多个客户端
    • 开启daemonize yes
    • 修改端口
    • 修改log名
    • 修改dump.rdb的名称

    修改这几个配置主要是为了区分开不同的客户端。

    一、一台主机,两台从机

    一个传给多个

    1.info repllication:查看当前主机角色状态(master主机/slaver从机)

    1. slaveof ip port : 指定当前主机为ip port的从机,就会开始备份

    从机只能读,不能写,主机才能写

    可能遇到的一些问题:

    1.主机挂掉之后,从机的状态?

    主机宕机之后,从机还是slaver,连接状态变为down

    2.主机重新连接之后从机的状态?

    当主机重新连接后,一切恢复正常

    3.从机挂了,重新启动之后该机器的身份,是主机还是从机?能否续接上?

    从机挂了重新启动之后的身份是master,需要重新确定与主机的关系。(可以写进配置文件自动连接上ip port)

    二、薪火相传

    一个接着一个,作为上一个的从机,形成一个链

    上一个slaver可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效的减轻master的写压力。

    中途变更转向:会清楚之前的数据,重新建立拷贝最新的。

    命令:slaveof 新主机ip 新主机端口

    链中间的客户端身份还是slave

    三、反客为主

    使当前数据库停止与其他数据库的同步,转成主数据库。

    命令:slaveof no one

    复制原理

    slave启动成功连接到master后会发送一个sync同步命令。

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

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

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

    缺点:复制延时

    首次是全量复制,之后是增量复制


    哨兵模式

    可以理解为自动的反客为主,主机挂了之后会在从机中投票选出一个作为新主机。

    使用步骤:

    1. 在启动的redis.conf同级目录下新建sentinel.conf文件
    2. 配置sentinel.conf:sentinel monitor 被监控数据库名 ip port 1 :1 的意思是主机挂掉之后从机的票数多余1票就选出作为新主机。
    3. 启动哨兵:redis-sentinel sentinel.conf

    当之前挂掉的主机重新启动之后,会变为从机,连接到哨兵选出来的新master上,作为该主机的从机。


    持续更新~~

  • 相关阅读:
    第二十四讲 ASP.NET中开发复合控件
    第二十六讲 使用ASP.NET实现网络通讯
    第二十五讲 ASP.NET中的XML
    【经验】android webview 后退键导致表单再次提交
    【笔记】java 泛型
    【笔记】Collection
    【算法】Tween算法
    【JavaSript】发现一个漏洞
    【研究】加载图片时,同一url,多次request
    【笔记】多态之Override
  • 原文地址:https://www.cnblogs.com/mrjkl/p/13174415.html
Copyright © 2011-2022 走看看