• 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了

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

  • 相关阅读:
    Solana链,什么是sol跟单机器人、pump跟单机器人、sol狙击机器人、sol夹子机器人、sol聪明钱筛选
    OZON测评自养号技巧,提升店铺权重和销量,避免恶意跟卖
    Linux常用精简命令
    Python:实现fermat little theorem费马小定理算法(附完整源码)
    ZCU102 Zynq MPSoC IP设置与说明
    关于git flow工作流的使用
    leetcode刷题记录
    SpringCloud框架(一):环境搭建 生产和消费 RestTemplate,底层源码解读
    【kafka】十、kafka消费者offset维护
    数据结构-红黑树
  • 原文地址:https://blog.csdn.net/weixin_46371752/article/details/126085425