第1集 Redis6.X主从复制+读写分离介绍
简介:Redis6.X主从复制+读写分离介绍
-
背景
-
单机部署简单,但是可靠性低,且不能很好利用CPU多核处理能力
-
生产环境-必须要保证高可用-一般不可能单机部署
-
读写分离是可用性要求不高、性能要求较高、数据规模小的情况;
-
-
目标
- 读写分离,扩展主节点的读能力,分担主节点读压力
- 容灾恢复,一旦主节点宕机,从节点作为主节点的备份可以随时顶上来
- Redis主从架构介绍
第2集 Linux服务器-Redis6.X 主从复制 一主二从架构环境准备
简介:Redis6.X 主从复制 1主2从架构环境准备
- 配置
mkdir -p /data/redis/master/data
mkdir -p /data/redis/slave1/data
mkdir -p /data/redis/slave2/data
#从节点开启只读模式(默认)
replica-read-only yes
#从节点访问主节点的密码,和requirepass一样
masterauth 123456
#哪个主节点进行复制
replicaof 8.129.113.233 6379
- 创建主配置文件redis.conf
bind 0.0.0.0
port 6379
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis1.log"
dbfilename "xdclass1.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly1.aof"
masterauth "123456"
- 创建两个从配置文件redis.conf
bind 0.0.0.0
port 6380
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis2.log"
dbfilename "xdclass2.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly2.aof"
replicaof 8.129.113.233 6379
masterauth "123456"
- 创建从配置文件redis.conf
bind 0.0.0.0
port 6381
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis3.log"
dbfilename "xdclass3.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly3.aof"
replicaof 8.129.113.233 6379
masterauth "123456"
-
防火墙记得关闭,或者开放对应的端口
- 阿里云服务器记得开发网络安全组
第3集 Redis6.X 主从复制 一主二从架构搭建实战
简介:Redis6.X 主从复制 1主2从架构搭建实战
- 启动
#启动主
./redis-server /data/redis/master/data/redis.conf
#启动从
./redis-server /data/redis/slave1/data/redis.conf
#启动从
./redis-server /data/redis/slave2/data/redis.conf
-
info replication 查看状态
-
主从复制和读写验证
-
防火墙和网络安全组记得开放端口
- 6379 主节点
- 6380 从节点
- 6381 从节点
第4集 Redis6.X主从架构-复制读写分离原理解析
简介:Redis6.X主从复制-读写分离原理解析
-
主从复制分两种(主从刚连接的时候,进行全量同步;全同步结束后,进行增量同步)
-
全量复制
- master服务器会开启一个后台进程用于将redis中的数据生成一个rdb文件
- 主服务器会缓存所有接收到的来自客户端的写命令,当后台保存进程 处理完毕后,会将该rdb文件传递给slave服务器
- slave服务器会将rdb文件保存在磁盘并通过读取该文件将数据加载到内存
- 在此之后master服务器会将在此期间缓存的命令通过redis传输协议发送给slave服务器
- 然后slave服务器将这些命令依次作用于自己本地的数据集上最终达到数据的一致性
-
增量复制
- Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程
- 服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令
-
-
特点
-
主从复制对于 主/从 redis服务器来说是非阻塞的,所以同步期间都可以正常处理外界请求
-
一个主redis可以含有多个从redis,每个从redis可以接收来自其他从redis服务器的连接
-
从节点不会让key过期,而是主节点的key过期删除后,成为del命令传输到从节点进行删除
- 从节点开启 sync 看日志
-
-
加速复制
- 完全重新同步需要在磁盘上创建一个RDB文件,然后加载这个文件以便为从服务器发送数据
- 在比较低速的磁盘,这种操作会给主服务器带来较大的压力
- 新版支持无磁盘的复制,子进程直接将RDB通过网络发送给从服务器,不使用磁盘作为中间存储
- repl-diskless-sync yes (默认是no)
-
主从断开重连
- 如果遭遇连接断开,重新连接之后可以从中断处继续进行复制,而不必重新同步
- 2.8版本后 部分重新同步这个新特性内部使用PSYNC命令,旧的实现中使用SYNC命令