zoukankan      html  css  js  c++  java
  • Linux下redis主从同步

    redis主从同步

    原理 : 

      1. 从服务器像主服务器发送SYNC命令.

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

      3. 当主服务器执行完BGSAVE命令时, 它会向从服务器发送RDB文件. 而从服务器则会接受并载入这个文件.

      4. 主服务器将缓冲区存储的所有写命令发送给从服务器执行.

      -------------------------------

      1. 在开启主从复制的时候, 使用的是RDB方式同步主从数据的.

      2. 同步开始之后, 通过主库命令传播的方式, 主动的复制方式实现.

      3. 2.8以后实现PSYNC的机制, 实现断线重连.


    实验环境准备

    准备两个或两个以上的redis实例 :

    mkdir /data/638{0..2}    # 创建6380, 6381, 6382文件夹

    配置文件实例 :

    # vim   /data/6380/redis.conf
    port 6380
    daemonize yes
    pidfile /data/6380/redis.pid
    loglevel notice
    logfile "/data/6380/redis.log"
    dbfilename dump.rdb
    dir /data/6380
    protected-mode no
    # vim   /data/6381/redis.conf
    port 6381
    daemonize yes
    pidfile /data/6381/redis.pid
    loglevel notice
    logfile "/data/6381/redis.log"
    dbfilename dump.rdb
    dir /data/6381
    protected-mode no
    # vim /data/6382/redisconf
    port 6382
    daemonize yes
    pidfile /data/6382/redis.pid
    loglevel notice
    logfile "/data/6382/redis.log"
    dbfilename dump.rdb
    dir /data/6382
    protected-mode no

    启动三个redis实例 :

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

    预主从规划 :

    主节点:6380
    从节点:6381、6382

    查看redis的身份信息, 通过info参数() 此时还未配置主从, 因此身份都是master身份 :

    redis-cli -p 6382 info Replication
    redis-cli -p 6381 info Replication
    redis-cli -p 6380 info Replication

    配置主从身份, 通过命令指明master节点信息 :

    redis-cli -p 6381
    127.0.0.1:6381> SLAVEOF 127.0.0.1 6380 
    ----------------------------------------------------------
    redis-cli -p 6382
    127.0.0.1:6382> SLAVEOF 127.0.0.1 6380 

    测试写入数据, 主库写入数据, 检查从库数据 :

    127.0.0.1:6380> set name xd
    127.0.0.1:6381>get name 
      

    手动进行主从复制故障切换 :

    #关闭主库6380
    redis-cli -p 6380
    shutdown

    检查从库主从信息, 此时master_link_status:down :

    redis-cli -p 6381
    info replication
    
    redis-cli -p 6382
    info replication

    既然主库挂了, 就要在从库内选一个新的主库 :

    1. 将6381关闭从库身份 :

    redis-cli -p 6381
    info replication
    slaveof no one

    2. 将6382设为6381的从库 :

    6382连接到6381:
    [root@db03 ~]# redis-cli -p 6382
    127.0.0.1:6382> SLAVEOF no one
    127.0.0.1:6382> SLAVEOF 127.0.0.1 6381
  • 相关阅读:
    7.3形成团队结构
    第7章 设计构架
    第6章 空中交通管制:高可用性设计案例分析
    5.5安全性战术
    第5章实现质量属性
    4..4.7 使用一般场景进行沟通的概念
    4.4.3性能
    第II部分创建构架
    3.3.2使用结构
    docker容器互联
  • 原文地址:https://www.cnblogs.com/dong-/p/10088815.html
Copyright © 2011-2022 走看看