• 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

    作者:以罗伊
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    智慧养老民政监管平台建设方案
    CF600E Lomsat gelral dsu on tree
    dsu on tree详解
    【Spring 从0开始】Spring5 新功能,整合日志框架 Log4j2
    【Spring 从0开始】JdbcTemplate 数据库事务管理
    【Spring 从0开始】JdbcTemplate 数据库事务参数
    【Spring 从0开始】JdbcTemplate 数据库事务管理
    【Spring 从0开始】JdbcTemplate 操作数据库
    【Spring 从0开始】AOP 操作
    【Spring 从0开始】AOP 操作中的相关术语、环境准备
  • 原文地址:https://www.cnblogs.com/my-ordinary/p/12754851.html
Copyright © 2020-2023  润新知