Redis 复制(Redis 主从/Redis 读写分离)

Redis 复制 官网

可以干什么

  1. 读写分离
  2. 容灾恢复
  3. 数据备份
  4. 水平扩容支撑高并发

如何使用

  1. 配从(库)不配主(库)
  2. master如果配置了requirepassa参数,需要密码登陆那么slave就要配置masterauth来设置校验密码,
    否则的话masters会拒绝slave的访问请求
  3. 常用命令
info replication #可以查看复制节点的主从关系和配置信息
replicaof #主库IP主库端口
slaveof #主库IP主库端口
slaveof no one #从库脱离主库

slaveof命令连接

redis 重启主从关系将失效

注意: 主库可读写 从库可读不可写

配置修改

配置和之前主机的一样 记得修改 端口号(按照自己的改)
masterauth 连接主 redis 的 ${requirepass} 密码 从库一定要配置主库不用做任何改变

################################## MODULES #####################################
#bind 127.0.0.1 -::1
protected-mode no
port 6379

################################# GENERAL #####################################

daemonize no

################################ SNAPSHOTTING  ################################
 save 3600 1 300 100 60 5
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump_6379.rdb
rdb-del-sync-files yes
dir /data

################################# REPLICATION #################################
requirepass 1111222

appendonly yes
appendfilename "appendonly.aof"
appenddirname "appendonlydir_6379"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes

masterauth 1111222 # 连接主 redis 的 ${requirepass} 密码 从库一定要配置

连接操作配置

redission为什么读写分离_redis

redission为什么读写分离_redission为什么读写分离_02

replicaof配置连接

redis 重启主从关系将保持

配置和slaveof命令连接的配置一样只需要加上一下配置直接启动(重启)就可以实现replicaof配置连接

replicaof 127.0.0.1 6379 #配置master redis 的ip 和 port

注意:

  1. master 下线 slaver 不会自动尚未
  2. slaver 会自动同步 master 的数据
  3. replicaof配置连接 master 永远时是 master ,重启会自动上位

redission为什么读写分离_redis_03

主从复制流程

  1. slave启动成功连接到master后会发送一个sync命令,slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除
  2. master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后,master将rdb快照文件和所有缓存的命令发送到所有slave,以完成一次完全同步,而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化
  3. 心跳持续,保持通信 ,默认配置心跳周期10s repl-ping-replica-period 10
  4. master 继续将新的所有收集到的修改命令自动依次传给 slaver
  5. master会检查backlog里面的偏移量(offset),master和slave都会保存一个复制的offset还有一个masterId,offset是保存在backlog中的。Master只会把已经复制的offset后面的数据复制给Slave,类似断点续传

缺点:

  1. 复制延迟,信号衰减。当进行多个从机进行复制时会产生信号衰减
  2. slaver 不会自动上位 ,master 宕机服务会受到影响