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

    一:简介

    一:产生背景

    redis是一个高可用的数据库,可以进行高速的读写操作,但是单机redis容易出现单点故障灯问题

    一:虽然redis可以进行数据持久化等操作避免数据丢失,但是物理故障 例如磁盘损坏等 数据还是会丢失

    二:当只有单台redis服务器的时候 大量读写操作 对CPU,内存,磁盘容量很容易达到瓶颈

    二:解决办法

    针对上述问题:可以通过redis复制功能,通过一主(master)多从(slave),或者多主多从(集群),通过多台服务器进行redis服务搭建,提供高可用的redis服务

    三:主从复制介绍

    redis主从复制模型中,分为主服务器(master)从服务器(slave)两种角色,一台主服务器可以有多台从服务器,一台从服务器也可以有自己的从服务器,主服务器可以进行读写操作,而从服务器只进行读取操作(可以通过修改配置文件 让从服务器具有写的功能)同时会同步主服务器写入的数据,如果主服务器宕机,从服务区可以充当主服务器

    四:特点

     (1):一个主服务器可以有多个从服务器

     (2):一个从服务器可以有自己从服务器

     (3):主服务器挂了可以让从服务器充当主服务器

     (4):使用异步复制

     (5):异步复制不会阻塞主服务器

       (6):可以让主服务器免去持久化操作 让从服务器进行持久化操作

       (7):通过主从实现读写分离

    五:主从复制原理

    redis主从复制方式分为两种方式(两个阶段)

    (1)全同步:当主从复制开始的时候 会进行全同步数据

    (2)部分同步:当全同步结束会进行部分同步

    PS:无论何时 从服务器都可以在任意时刻进行全同步

    (1):从服务器会向主服务器发送SYNC请求

    (2):接收到SYNC的主服务器会调用BGSAVE命令,创建一个RDB文件,并使用缓冲区记录下来执行的所有命令

    (3):当主服务器BGSAVE命令执行完毕,会向从服务器发送RDB文件,而从服务器则会接收并且载入这个文件

    (4):从服务器执行RDB文件 然后完成数据初始化同步

    六:命令传播

    在主从服务器完成同步之后,主服务器每执行一个写命令,它都会将被执行的写命令发送给从服务器执行,这个操作被称为“命令传播”(command propagate)。

     二:redis主从复制配置

     在安装redis时就进行了多实例的配置

    准备两个或两个以上redis实例
    6380/redis-server
    6380/redis.conf
    6381/redis-server
    6381/redis.conf
    6382/redis-server
    6382/redis.conf

    配置文件示例:

    bind 127.0.0.1 10.0.0.186
    
    port 6380
    
    daemonize yes
    
    pidfile /var/run/redis_6380.pid
    
    loglevel notice
    
    logfile "/var/log/redis_6380.log"
    
    dbfilename dump.rdb
    
    dir /application/redis/6380/
    
    appendonly no
    
    appendfilename "appendonly.aof"
    
    appendfsync everysec
    
    slowlog-log-slower-than 10000
    
    slowlog-max-len 128
    
    protected-mode no

    启动:

    ./6380/redis-server ./6380/redis.conf
    
    ./6381/redis-server ./6381/redis.conf
    
    ./6382/redis-server ./6382/redis.conf

    复制环境说明

    主节点:6380

    从节点:6381、6382

    开启主从(在6381 6382实例中执行)

    redis-cli -p 6381/6382
    
    SLAVEOF 127.0.0.1 6380
  • 相关阅读:
    tnsnames.ora和listener.ora文件中的几个概念转
    SAP权限概念与设置(转)
    SAP License:HANA在线日志被误删了怎么办?(转)
    SAP ERP to SAP Cloud Platform Integration via Webdispatcher
    DotSpatial 要素删除节点
    DotSpatial 节点编辑
    使新添加的.gitignore生效
    关于netcat(nc)开启监听有趣的发现
    Gluster FS故障修复
    Git去除SSL验证
  • 原文地址:https://www.cnblogs.com/SR-Program/p/12444795.html
Copyright © 2011-2022 走看看