自学内容网 自学内容网

Redis主从复制(replication)


是什么

  • 主从复制,master以写为主,slave以读为主
  • 当master数据发生变化的时候,自动将新的数据异步同步到其他slave数据库

作用

  • 读写分离
  • 容灾恢复
  • 数据备份
  • 水平扩容支撑高并发

使用

  • 配置从库不配主库

  • 权限细节
    master如果配置了requirepass参数,需要密码登录
    那么slave就要配置masterauth来设置校验密码,否则的话主机master会拒绝访问
    在这里插入图片描述

  • 基本操作命令

info replication:可以查看复制节点的主从关系和配置信息

replicaof 主库ip 主库端口:一般写入redis.conf中

slaveof 主库ip 主库端口:
每次与主机断开之后,都需要重新连接,除非配置进了redis.conf文件
在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从库,那么会停止和原主库的同步关系,转而和新的主库进行同步

slaveof no one
使当前数据库停止与其他数据库的同步,转成主数据库

案例实操

架构设计:
在这里插入图片描述
主机配置:

  1. 开启daemonize yes
    在这里插入图片描述

  2. 注释掉bind 127.0.0.1
    在这里插入图片描述

  3. protected-mode no
    在这里插入图片描述

  4. 指定端口
    在这里插入图片描述

  5. 指定当前工作目录,dir
    在这里插入图片描述

  6. pid文件名字,pidfile
    在这里插入图片描述

  7. log文件名字,logfile
    在这里插入图片描述

  8. requirepass
    在这里插入图片描述

  9. dump.rdb
    在这里插入图片描述

  10. aof文件,appendfilename
    在这里插入图片描述
    在这里插入图片描述

  11. 从机访问主机的通行密码masterauth必须,从机配置

在这里插入图片描述

  1. 主从关系命令查看
info replication

问题:

  • 从机可以执行写命令吗?
    在这里插入图片描述

  • 主机关闭后,从机会上位吗
    从机不动,原地待命,从机数据可以正常使用;等待主机重启动归来
    在这里插入图片描述

  • 主机关闭后,重启后主从关系还在吗
    主从关系依旧存在
    在这里插入图片描述

  • 某台从机关闭后,主机继续写入数据,从机重启后是否数据有同步

主从复制原理和工作流程

slave启动,同步初请

  1. slave启动成功连接到master后会发送一个sync命令
  2. slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除

首次连接,全量复制

  • master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后,master将rdb快照文件和所有缓存的命令发送到所有slave,以完成一次完全同步
  • 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化

心跳持续,保持通信

master发出PING包的周期,默认是10秒
在这里插入图片描述

进入平稳,增量复制

继续将新的所有收集到的修改命令自动依次传给slave,完成同步

从机下线,重连续传

master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId
offset是保存在backlog中的。Master只会把已经复制的offset后面的数据复制给Slave,类似断点续传

复制的缺点

  • 复制延时,信号衰竭
    在这里插入图片描述

  • master挂了咋办,因为只有主机可以进写操作,从机只能读,主机挂了,相当于缓存不可用,系统瘫痪


原文地址:https://blog.csdn.net/weixin_44793245/article/details/143718392

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!