zoukankan      html  css  js  c++  java
  • redis主从同步(复制+哨兵) 学习笔记

    0 环境

    • 系统环境: centos7
    • 编辑器: xshell

    1 准备

    基本安装 -> 我选择直接编译安装
    思维导图参考

    2 配置

    1 复制3个conf

    在这里插入图片描述

    需要三个端口6379 6380 6381 我用的阿里云 所以提前在安全组配好
    准备3个conf文件 redis6379.conf redis6380.conf redis6381.conf

    # 复制3个conf 类似 不在追叙
    cp redis.conf redis6379.conf
    

    2 修改redis6379.conf

    # 文件的复制 为了省事 可以整个项目复制 cp -R redis redis-6379 类似
    vim redis6379.conf
    	port 6379
    	pidfile /var/run/redis_6379.pid
    	logfile "6379.log"
    	dbfilename dump6379.rdb
    	appendfilename "appendonly6379.aof"
    # wq保存退出
    # redis-server redis6379.conf
    # 运行
    redis-cli -a 123456	
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3 修改redis6380.conf

    将redis6380.conf中6379全改为6380 下面的redis6381.conf也是一样 保存退出 如图
    在这里插入图片描述

    • 访问redis-cli -p 6380 -a 123456
    # 主节点设为6379 但是重启之后 又得重新设置 所以需要在conf中配置
    SLAVEOF 127.0.0.1 6379
    # 查看6379里的数据 是否同步 是 --> 有数据
    keys *
    # 可以通过它查看 具体信息
    info replication
    
    • 在reids6380.conf中设置连接6379认证密码
      在这里插入图片描述
    • 在reids6380.conf设置主节点
      在这里插入图片描述
    • 6380节点(从节点)不可写入(reids6380.conf可以设置只读 no 即可写入)
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    4 修改redis6381.conf(接力棒)

    和redis6380.conf修改一致
    但是有一个问题出现了 都指向6379 增加了6379的负担 现在有个方式 接力的模式
    6379 -> 6380 -> 6381 (6380同步6379 6381同步6380 有点血缘的传承(但不全一样 类似) 爷爷 --> 爸爸 --> 儿子)

    127.0.0.1:6381> SLAVEOF 127.0.0.1 6380
    OK
    127.0.0.1:6381> keys *
    1) "a"
    127.0.0.1:6381> info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6380
    master_link_status:up
    master_last_io_seconds_ago:6
    master_sync_in_progress:0
    slave_repl_offset:6468
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:8aaef6f934ddeb720218b07507ab8277837aac9c
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:6468
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:6441
    repl_backlog_histlen:28
    127.0.0.1:6381> exit
    

    或是在conf上修改和之前的类似

    3 哨兵配置

    配置一个主服务器(6379)和2个从服务(6380 6382) --> 一主二仆

    1 配置sentinel

    # 配置哨兵
    vim sentinel.conf
    #  mymaster --> 监控的主机名 可以随便取 
    # 2代表多少个sentinel认为主机挂了 才会切换 
    sentinel monitor mymaster 127.0.0.1 6379 2
    # 在上面的命令之下 不然启动会卡住不动
    sentinel auth-pass mymaster 123456
    # 保存退出
    wq
    
    vim redisxxx.conf
    # 注意 在三个节点(6379 6380 6382) 都添加如下命令 不然没密码 会。。。
    masterauth "123456"
    
    # 开启主从服务 
    redis-server xxx.conf
    
    # 查看一下节点 没毛病
    ps -ef|grep redis
    
    # 都ok了 启动哨兵 会看到slave slave 从节点 @ mymaster 127.0.0.1 6379(节点)
    redis-server sentinel.conf
    
    # 先开个窗口 cli 6379 输入命令SHUTDOW 关闭主服务器
    redis-cli -a 123456
    
    # 查看哨兵 稍等一会 切换过来了 主服务器挂了 内部选举 6380上位(老大) 之前的6379(小弟)
    +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
    +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
    

    2 查看结果

    • 主服务器挂了 等一会 从服务器切换为master
      在这里插入图片描述
    • redis-cli -a 123456 -p 6380 info replication
      在这里插入图片描述
    • 重新启动6379后 是从服务器了
      在这里插入图片描述
      在这里插入图片描述
    • 在sentinel.conf中查看 结果已经变了
      在这里插入图片描述

    3 注意

    当我们客户端不连接redis服务器是没有问题的 但是当我们调用它 没问题 但是主节点挂掉了 会报错 所以需要每个conf绑定具体的ip(配置节点也是) 监控master不能写127.0.0.1也要配置具体的ip

    作者:以罗伊
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    OpenVINO Model Server的服务化部署——step3(django服务构建)
    (5)名称空间 namespace 和 using 声明
    (4)#include 指令
    (3)注释
    (2)简单的程序
    (1)Hello World
    javaScript 错误学习 -- throw、try 、catch和 finally
    js 如何在数字前面自动补零,生成序列号、单据号
    vs2015项目运行出现“无法启动IIS Express Web服务器”,如何解决
    Sql Server 2008 如何将数据表导出Excel文件?
  • 原文地址:https://www.cnblogs.com/my-ordinary/p/12754851.html
Copyright © 2011-2022 走看看