Redis主从架构

该文详细介绍了如何在CentOS7上搭建Redis5.0.3的主从架构,包括gcc安装、Redis下载与编译、主从节点的配置及启动,以及主从复制的工作原理和部分复制机制。此外,还提及了解决主从复制风暴的策略。
摘要由CSDN通过智能技术生成
Redis主从架构搭建(Centos7+)
gcc安装
yum install -y gcc
下载Redis5.0.3安装包
wget http://download.redis.io/releases/redis‐5.0.3.tar.gz
解压安装包到/usr/local下
tar -zxvf redis‐5.0.3.tar.gz -C /usr/local
mv /usr/local/redis-5.0.3 /usr/local/redis
编译解压的安装包
cd /usr/local/redis
make
master节点配置&启动
修改配置文件

复制redis.conf文件为redis-master.conf,修改redis-master.conf配置文件

daemonize yes #后台启动
protected‐mode no #关闭保护模式,开启的话,只有本机才可以访问redis
# 需要注释掉bind
#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
# 开启AOF 
appendonly yes

# The name of the append only file (default: "appendonly.aof")

appendfilename "appendonly.aof"
# 开启混合存储
aof-use-rdb-preamble yes 

# slave-1进程号写入pidfile配置文件
pidfile /var/run/redis_master_6379.pid

# 配置master 日志文件
logfile "redis-master-6379.log"

# 指定数据存放目录
dir ./data/master
启动master服务
src/redis-server redis-master.conf
slave-1节点配置&启动
修改配置文件

复制redis.conf文件为redis-slave-1.conf,修改redis-slave-1.conf配置文件

daemonize yes #后台启动
# 配置slave-1端口
port 6380
protected‐mode no #关闭保护模式,开启的话,只有本机才可以访问redis
# 需要注释掉bind
#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
# 开启AOF 
appendonly yes

# The name of the append only file (default: "appendonly.aof")

appendfilename "appendonly.aof"
# 开启混合存储
aof-use-rdb-preamble yes 
# slave-1进程号写入pidfile配置文件
pidfile /var/run/redis_slave_6380.pid
# 配置slave-1 日志文件
logfile "redis-slave-6380.log"

# 指定数据存放目录
dir ./data/slave-1

# 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replicaof 192.168.68.100 6379   
# 配置从节点只读
replica-read-only yes  
启动slave-1服务
src/redis-server redis-slave-1.conf
slave-2节点配置&启动
修改配置文件

复制redis.conf文件为redis-slave-2.conf,修改redis-slave-2.conf配置文件

daemonize yes #后台启动
# 配置slave-1端口
port 6381
protected‐mode no #关闭保护模式,开启的话,只有本机才可以访问redis
# 需要注释掉bind
#bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
# 开启AOF 
appendonly yes

# The name of the append only file (default: "appendonly.aof")

appendfilename "appendonly.aof"
# 开启混合存储
aof-use-rdb-preamble yes 
# slave-1进程号写入pidfile配置文件
pidfile /var/run/redis_slave_6381.pid
# 配置slave-2 日志文件
logfile "redis-slave-6381.log"

# 指定数据存放目录
dir ./data/slave-2

# 从本机6379的redis实例复制数据,Redis 5.0之前使用slaveof
replicaof 192.168.68.100 6379   
# 配置从节点只读
replica-read-only yes  
启动slave-2服务
src/redis-server redis-slave-2.conf
Redis 主从架构工作原理

为master节点配置一个slave节点,slave节点启动后,会发送一个PSYNC命令给master节点请求复制数据,master节点收到PSYNC命令后,会在后台fork一个bgsave子进程生成最新的rbd快照文件,在生成rbd快照文件期间,master节点会继续接受客户端的请求,会把可能修改的数据集缓存到内存中,当完成rbd快照文件生成后,master节点会把这份文件发送给slave节点,slave节点接收到rbd快照文件,把他加载到内存中,之后,master在将之前缓存在内存中的命令发送给slave节点。

主从数据部分复制

当master节点和slave节点断开重连后,一般都会对整份数据进行复制同步。从Redis 2.8版本开始,Redis改用可以支持部分数据复制的命令PSYNC去master节点同步数据,slage与master能够在网络连接断开重连后只进行部分数据复制(断点续传)。master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间的数据,master和它所有的slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master继续进行未完成的复制,从所记录的数据下标开始。如果master进程id变化了,或者从节点数据下标offset太旧,已经不在master的缓存队列里了,那么将会进行一次全量数据的复制。

主从复制风暴

主从复制风暴:多个从节点同时复制主节点导致主节点压力过大。

解决方案:让部分从节点与从节点(与主节点同步)同步数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值