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

    定义:主机数据更新后根据配置策略,自动同步到备的Master/slave机制,Master以写为主,Slave以读为主。

    Tip:配从(从库)不配主(主库)

    一.主节点(6379)直接启动,从节点(6380、6381)启动后,进入客户端,执行下述命令:

     slave of 主节点IP 主节点端口,例:

    slave of 127.0.0.1 6379

    或者使用 redis-server 配置文件 --applicaof 主节点IP 主节点端口,例:

    redis-server 6379.conf --applicaof 127.0.0.1 6379

    二 .使用命令 info replication 查看主备详情:

         

    1.从机默认不能进行写操作,可修改配置文件修改写的权限:

    replica-read-only yes

    2.主机(6379)存储数据后,从机(6380、6381)执行slaveof命令,丛机会先删除本机老的数据,主节点将落一个rdb文件到磁盘,然后传输rdb文件到从节点,

    5.x版本中(其他版本可自行查看),主节点可直接将rdb文件直接发送至从节点,不需要先落本地磁盘,修改配置文件即可:

    repl-diskless-sync yes

    3.主机宕掉,从机还是slave角色,并不会上位成为master,链接状态变为down

    4.主机从新启动后,还是master角色,从机的连接状态变为up

    5.从机宕了,恢复后不再与之前的主机有关联,角色变为master,想要变为从机,需要再次执行命令slaveof

     三、手动执行命令,让从变成主:

    命令:slaveof no one (使当前数据库停止与其他数据库同步,转成主数据库)

    操作步骤:

     1. 将三台redis还原回一主二仆的环境(6379为主机,6380与6381作为6379的从机)

     2. 将6379关掉(模拟线上宕机情况),

     3. 在6380中执行命令slaveof no one

     4. 将6381改成6380的从机

     5. 重新将6379启动

     我们发现,6380变成了主机,底下连了一台6381从机,当6379重新连接后,底下没有挂任何从机

        

    复制原理:

       1. 从节点连接到主节点后发送一个sync命令,主节点接到命令启动后台的存盘进程(同时收集所有接收到的修改数据的命令集[主库写操作]),后台进程完成后,主节点将传送整个数据文件到从节点完成一次同步

       2. 全量复制:第一次slaveof到主库的时候(接收到数据文件后,将其存盘并加载到内存中)

       3. 增量复制:除第一次slaveof外,从库以后都是增量存储数据(接收主库传来的修改命令)

    复制的缺点:

       由于所有的写操作都在主上,然后同步到从,同步上有一定的延迟,当系统繁忙的时候,延迟问题会加重,从机器数量的增加也会导致问题更加严重

  • 相关阅读:
    一个C++的unit库
    一篇关于如何组织unit tests的文章,很有趣
    web开发者的checklist
    用了story point就一定agile了吗?
    C#中如何用Windows Management Instrumentation (WMI)得到系统信息
    Windows下C++的同步机制的演变
    Sysinternals自动更新的工具SyncTools
    什么情况下要替换C++自带的new和delete
    VS2012插件:可视化TFS代码版本历史
    Quattro发布自助手机广告产品
  • 原文地址:https://www.cnblogs.com/wangfajun/p/5794605.html
Copyright © 2011-2022 走看看