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了

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值