Redis主从复制原理
主从复制是只将堕胎redis服务器 一般是一主二从三台 作为一个集群
一台是master 主节点 另外的节点称为slave/follower 称为从节点
集群内 主节点有读写功能,以写为主 从节点只有只读功能,不能写入数据
从节点的数据是从主节点复制过来的
主从复制的优点
- 实现了数据冗余,主备复制上的数据是一样的 实现了热备功能
- 故障恢复 当主节点故障时,备节点可以提供恢复数据的功能
- 负载均衡,主备机群配合读写分离,可以大大提高服务器并发量,分担访问量负载
- 实现了服务的高可用,主从复制+哨兵模式 实现了redis集群的高可用
生产环境下的redis
- 一般不会使用单台 redis是内存数据库 内存数据断电即失,
- 从访问响应速度上来说 不论一个服务器真实物理内存有多大,当单台redis的使用内存量超过20G的时候,已经不适合单机使用了。
- 不论关系型数据库还是非关系型数库 往往都是“少写多读”的环境,一次写入 会不断读取数据,建议使用集群环境实现读写分离。
Redis主从复制
环境搭建
只配置从库 不配置主库
127.0.0.1:6379> info replication #查询当前库的信息
# Replication
role:master #角色 master
connected_slaves:0 #没有从机
master_replid:78bc4f2d4fb4f0985b99db4b5ad45bf32d35513b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
一台虚拟机上搭建redis主从复制
开启4个会话窗口
- 复制三份配置文件配置文件
- 编辑redis6379.conf
port 6379
daemonize yes #后台启动打开
logfile "6379.log" #日志格式改一下 因为有多个服务
dbfilename dump6379.rdb #dump文件名字改成dump6379.rdb
- 编辑redis6380.conf
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid #后台运行pid改完6380
logfile "6380.log"
dbfilename dump6380.rdb
- 编辑redis6381.conf
port 6381
daemonize yes
pidfile /var/run/redis_6381.pid
logfile "6381.log"
dbfilename dump6381.rdb
- 修改端口信息
- 修改后台启动
- 修改pid名称
- 修改log文件名称
- 修改rdb文件名称
- 启动6379端口的redis服务
- 启动6380端口的redis服务
- 启动6381端口的redis服务
- 查询服务进程
3个端口都启动了
配置主从关系
上面配置完默认都是三台主节点 我们要配置一主二从
- 会话1 端口6379 主节点
- 会话2 6380端口 主节点
- 会话3 6381端口 主节点
默认三台都是master
一般情况下只用配置从机就可以
一主(6379)二从(6380/6381)
- 会话2 6380端口
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379 #配置主机的