• 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
  • 相关阅读:
    44 软件开发中的一些思考
    43 编译原理及cmake使用手册学习
    42 github 开源代码 ——README.md语法/相关操作等
    41 软件工程实施-以数字化测量系统为例
    40 VSCode下.json文件的编写——(1) linux/g++ (2).json中参数与预定义变量的意义解释
    css3 3D盒子效果
    css3实现无缝滚动效果
    js一些方法的扩展
    扩展原生js的一些方法
    递归
  • 原文地址:https://www.cnblogs.com/dong-/p/10088815.html
Copyright © 2020-2023  润新知