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

    原理:
    1. 从服务器向主服务器发送 SYNC 命令。
    2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。
    3. 当主服务器执行完 BGSAVE 命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。
    4. 主服务器将缓冲区储存的所有写命令发送给从服务器执行。


    -------------
    1、在开启主从复制的时候,使用的是RDB方式的,同步主从数据的
    2、同步开始之后,通过主库命令传播的方式,主动的复制方式实现
    3、2.8以后实现PSYNC的机制,实现断线重连

    环境准备,准备3个redis数据库实例,准备3个redis配置文件即可

    10.0.0.2110.0.0.2210.0.0.23

     分别在三台机器上创建配置文件

    主服务配置

    [root@10.0.0.21 ~]# mkdir /data/6379
    [root@10.0.0.21 ~]# cd /data/6379/
    [root@10.0.0.21  6379]# touch redis.conf

    写入以下配置

    port 6379
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    dbfilename dump.rdb
    dir /data/6379

    从库配置(10.0.0.22,10.0.0.23)配置相同

    [root@10.0.0.22 ~]# mkdir /data/6379
    [root@10.0.0.22 ~]# cd /data/6379/
    [root@10.0.0.22  6379]# touch redis.conf

    配置如下

    port 6379
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    dbfilename dump.rdb
    dir /data/6379
    SLAVEOF 10.0.0.21  6379

    启动三个redis实例

    [root@10.0.0.21 ~]# redis-server /data/6379/redis.conf

    检查主从状态

    从库:
    
    127.0.0.1:6379> info replication
    127.0.0.1:6379> info replication
    
    主库:
    127.0.0.1:6379 > info replication

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

    127.0.0.1:6379> set name chaoge
    
    
    从
    127.0.0.1:6379>get name 

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

    复制代码
    手动进行主从复制故障切换
    #关闭主库6379
    [root@10.0.0.21 ~]# redis-cli -p 
    127.0.0.1:6379> shutdown

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

    [root@10.0.0.22 ~]# redis-cli -p 6379
    127.0.0.1:6379> info replication
    
    [root@10.0.0.23 ~]# redis-cli -p 6379
    127.0.0.1:6379> info replication

    既然主库挂了,我想要在从库之间选一个新的主库

    1.关闭10.0.0.22 : 6379的从库身份
    
    redis-cli -p 6379
    info replication
    slaveof no one
    2.将10.0.0.23:6379设为10.0.0.22:6379的从库
    
    [root@10.0.0.23 ~]# redis-cli -p 6379
    127.0.0.1:6382> SLAVEOF no one
    127.0.0.1:6382> SLAVEOF 10.0.0.22 6379
  • 相关阅读:
    swift 关于FDFullscreenPopGesture的右滑返回
    ios 根据 schemes 打开 app
    ios UITableView的style的区别与用法,以及分割线的显示与隐藏
    swift 导入 .a 和 .h 文件
    ios 11 SDK 新特性 使用
    cocoapods 安装中出的太多问题
    GCD
    View的原理
    android ViewPager左右滑动实现导航栏的背景随页面滑动而滑动
    Android中图像变换Matrix的原理、代码验证和应用
  • 原文地址:https://www.cnblogs.com/wanglan/p/10507985.html
Copyright © 2011-2022 走看看