• redis-集群-1-主从复制:单台机器模拟主从复制,一主二从


    集群:实现主从复制、读写分离、高可用

    我们如何在一台机器上模拟出集群的效果,就是部署三台机器,一台设置为主redis,另外两台是从redis。

    环境:

    系统  ubuntu18.04

    redis  4.0.9

    一、配置redis的配置文件redis.conf

    位置:/etc/redis/redis.conf

    #将redis.conf 复制三份

    cd /ect/redis

    cp redis.conf  redis6379.conf 

    cp redis.conf  redis6380.conf

    cp redis.conf  redis6381.conf

    进入文件中,如何快速查找到对应的配置项

    /或? 关键字(要找的配置)  +回车
    通过n 往下找搜到的配置
    通过N 往上找搜到的配置

    主redis的配置文件修改:假设以端口6379为主redis

    cd /etc/redis

    sudo vi redis6379.conf

    #修改的配置如下

    port 6379

    daemonize yes       #开启保护进程
    pidfile /var/run/redis/redis-server6379.pid
    logfile /var/log/redis/redis-server6379.log
    dbfilename dump6379.rdb
    protected-mode  no  # 进行主从复制。

    bind 192.168.137.140 #绑定的IP

    requirepass Huawei@123#设置密码,主从密码设置一样

    从redis的配置文件修改:两个从redis,根据端口号,设置不同

    cd /etc/redis

    sudo vi redis6380.conf

    #修改的配置如下

    port 6380

    daemonize yes       #开启保护进程
    pidfile /var/run/redis/redis-server6380.pid
    logfile /var/log/redis/redis-server6380.log
    dbfilename dump6380.rdb
    protected-mode  no  # 进行主从复制。

    bind 192.168.137.140 #绑定的IP

    requirepass Huawei@123#设置密码,主从密码设置一样

    #

    #从redis要多配置

    masterauth     Huawei@123   #主redis的密码
    slaveof            192.168.137.140 6379    #主IP 主端口

    二、启动redis服务,启动客户端

    启动redis服务器

    ubuntu开放端口:

    sudo ufw allow 6379
    sudo ufw allow 6380
    sudo ufw allow 6381

    #启动三个redis服务

    cd /etc/redis

    #启动 6379端口的redis服务
    sudo redis-server ./redis6379.conf
    #启动 6380端口的redis服务
    sudo redis-server ./redis6380.conf
    #启动 6381端口的redis服务
    sudo redis-server ./redis6381.conf

    很明显,一个配置文件就启动一台redis服务,以不同的端口号启动,就可以模拟部署多台。

    开启三个终端,启动三个客户端使用redis数据库:

    redis-cli -h 192.168.137.140 -p 6379

    redis-cli -h 192.168.137.140 -p 6380

    redis-cli -h 192.168.137.140 -p 6381

    三、练习

    主redis:192.168.137.140:6379这台

    6379> auth Huawei@123 #先登录

    6379> set name lhz

    6379> get name

    "lhz"

    #在主redis中,主redis可以set也可以get

    从redis:192.168.137.140:6380/6381

    6380> auth Huawei@123 #先登录

    6380> get name

    "lhz"

    6381> auth Huawei@123 #先登录

    6381> get name

    "lhz"

    6380> set age 18

    (error) READONLY You can't write against a read only slave.

    6381> set age 18

    (error) READONLY You can't write against a read only slave.

    #对于从redis,只能进行get操作,不能set数据,这就是读写分离了

    #set name lhz 是在6379中完成的,但是可以从6380/6381中get name,这是主从复制了

    如何查看主从信息:

    6379> info replication

    role:master   #角色,是主服务器
    connected_slaves:2  #连接的从服务器数
    slave0:ip=192.168.137.140,port=6380,state=online,offset=318500,lag=1

    slave1:ip=192.168.137.140,port=6381,state=online,offset=318500,lag=1
     

    如果主redis故障了,目前只能通过手动的方式去将从redis切换成主

    #我们将6379这个主的redisshutdown,模拟主故障

    6379> shutdown

    #我们手动将6380切换成主redis

    6380> slaveof no one

    #这样6380就变成主redis了

    这种方式不适合真正的业务场景,业务上使用的是哨兵模式来实现主从切换的。

  • 相关阅读:
    C++中虚继承时的构造函数
    Mybatis 动态语言 - mybatis-thymeleaf
    【JUC源码专题】LinkedBlockingQueue 源码分析(JDK8)
    2023.11.7 Spring 依赖注入的三大方式
    13这些权限废弃,你的应用受影响了吗?
    1149. 文章浏览 II
    基于ssm的大学校医院信息管理系统设计与实现-计算机毕业设计源码+LW文档
    【代码源每日一题Div1】平方计数「nlogn巧妙枚举倍数优化」
    前端发布项目后,解决缓存的老版本文件问题
    千兆路由只有200M,原来是模式选择不对,也找到了内网不能通过动态域名访问内部服务的原因
  • 原文地址:https://blog.csdn.net/weixin_46371752/article/details/126085425