redis简单主从复制的实现


Redis主从复制 Replication从服务器执行客户端发送的读命令,比如GET、LRANGE、SMEMMBERS、HGET、ZRANGE等等客户端可以连接Slaves执行读请求,来降低Master的读压力。
本文主要通过单台服务器多个端口实现Redis的主从复制搭建。本文不再讲解redis的安装。

1、规划

端口637963806381
主从MasterSlaveSlave

2、启动时或者启动后手动设置Slave

2.1 启动master

进入/opt/app/redis目录
启动

 redis-sever 
 #此时 默认启动 6379`

在这里插入图片描述

2.2 启动6380

再打开一个窗口 启动 6380

redis-sever  --port 6380

在这里插入图片描述
2.3 设置6380
打开一个shell 界面
登录6380客户端

redis-cli -p 6380
slaveof 127.0.0.1 6379

将服务器6380转换为6379的从库(Slave)
6380 服务器上输出如下 称为 6379的slave 开始从6379上同步数据
在这里插入图片描述
此时6379上输出如下
开始向6380上同步数据
在这里插入图片描述

2.3 验证6380

再打开shell 登录6380客户端

redis-cli -p 6380
set keya a

此时 如果在6380上不能在进行写操作

在这里插入图片描述
此时再打开界面,登录6379客户端

redis-cli -p 6379
set keya a

在这里插入图片描述
再回到6380 上 马上能读取到keya 的值
在这里插入图片描述

2.4 设置6381

此时再打开一个shell界面
启动时指定作为6379的从库

redis-sever  --port 6381 --slaveof 127.0.0.1 6379

6381 上输出
在这里插入图片描述

master 6379上输出
在这里插入图片描述

2.5 验证6381

在6379上再set master值 为6379
在这里插入图片描述
再连接上6381客户端,读取maste值如下
在这里插入图片描述
停止从master复制数据,恢复独立数据库身份
在 6381客户端上执行

slaveof no one

在这里插入图片描述
看到6379上输出
此时 在6379上写入数据

set slave1 6380

在这里插入图片描述
回到6381客户端上,不能再获取6379上的值
在这里插入图片描述

3、配置文件方式

关闭刚刚启动的 6379、6380、6381

redis-cli -p 6379 shutdown
redis-cli -p 6380 shutdown
redis-cli -p 6381  shutdown

3.1 拷贝redis.conf

将redis安装包中的配置文件拷贝redis安装目录

cp /opt/app/redis-2.8.18/redis.conf  /opt/app/redis

再复制3份

cp redis.conf redis6379.conf
cp redis.conf redis6380.conf
cp redis.conf redis6381.conf

3.2设置6379配置文件

设置6379 为后台启动,编辑redis6379.conf 找到daemonize 行,把no 改为yes

vim redis6379.conf
daemonize yes

3.3设置6380配置文件

编辑redis6380.conf 找到daemonize 行,把no 改为yes,把port 设置为6380,再加上master设置

vim redis6379.conf
daemonize yes
port 6380

slaveof 127.0.0.1 6379

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

3.4设置6381配置文件

编辑redis6381.conf 找到daemonize 行,把no 改为yes,把port 设置为6381,再加上master设置
在这里插入图片描述
在这里插入图片描述

3.5 启动

redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf

3.6 验证

登录6380
看到在6380库上不能进行写操作
此时由于6379未写入数据,也不能读取数据

redis-cli -p 6380
set slave1 6380
get slave1
keys *

在这里插入图片描述
在6381上操作也是同样的结果

redis-cli -p 6381
set slave2 6381
get slave2
keys *

在这里插入图片描述

回到主库6379 写如数据

redis-cli -p 6379
set slave1 6380
set slave2 6381
set master 6379

在这里插入图片描述
回到6380和6381上都能读取到刚写入的数据
在这里插入图片描述
在这里插入图片描述

4、主从复制问题

  1. 一个Master可以有多个Slaves
  2. Slave下线,只是读请求的处理性能下降
  3. Master下线,写请求无法执行
  4. 其中一台Slave使用SLAVEOF no one命令成为Master,其它Slaves执行SLAVEOF命令指向这个新的Master,从它这里同步数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值