redis简单主从复制的实现
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
- 1、规划
- 2、启动时或者启动后手动设置Slave
- 2.1 启动master
- 2.2 启动6380
- 2.3 验证6380
- 2.4 设置6381
- 2.5 验证6381
- 3、配置文件方式
- 3.1 拷贝redis.conf
- 3.2设置6379配置文件
- 3.3设置6380配置文件
- 3.4设置6381配置文件
- 3.5 启动
- 3.6 验证
- 4、主从复制问题
Redis主从复制 Replication从服务器执行客户端发送的读命令,比如GET、LRANGE、SMEMMBERS、HGET、ZRANGE等等客户端可以连接Slaves执行读请求,来降低Master的读压力。
本文主要通过单台服务器多个端口实现Redis的主从复制搭建。本文不再讲解redis的安装。
1、规划
端口 | 6379 | 6380 | 6381 |
主从 | Master | Slave | Slave |
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、主从复制问题
- 一个Master可以有多个Slaves
- Slave下线,只是读请求的处理性能下降
- Master下线,写请求无法执行
- 其中一台Slave使用SLAVEOF no one命令成为Master,其它Slaves执行SLAVEOF命令指向这个新的Master,从它这里同步数据
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |