redis 主从复制

配从不配主

  1. 主要开启密码 在redis.conf requirepass xxxx
  2. 在从机配置

查看主从关系

在主机或从机执行

info replication

注意点

  1. 从机可以读,但没有写的权限
  2. 主从机同时启动, 主机写一个命令,从机复制一个命令 主机开启动,写入命令,从机在启动, 会把之前主机命令全部复制,之后主机写入一个命令,从机复制一个命令。
  3. 主机宕机之后,从机不会自动变成主机。
  4. 从机配置在redis.cnf, 重启仍然生效
  5. slave 主机IP 主机端口号, 本次生效, 重启从机 ,就失效了。
  6. slave 主机IP 主机端口号,每次与master断开只会,都需要重新连接,除非配置在redis.conf文件,在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从数据库,那么会停止和原主数据库的同步关系**转而和新的主数据库同步
  7. 薪火相传,A主机下面挂载一个B从机, 同时B从机下面又挂载一个C从机, A是master B是slave ,C是slave,B虽然是C的master,但整体它依然是slave机。 不能写操作。但这样比Amaster下面挂载BC两个从机, 可以减少Amaster的写压力。
slaveof no one

当前的从机变成主机。 但原来复制的数据还在。

主从复制的原理

1、slave启动,同步初请

slave启动成功连接到master后会发送一个sync命令

slave首次全新连接master,一次完全同步(全量复制)将自动执行,slave自身原有的数据会被master数据覆盖清除
2、首次连接,全量复制

master节点收到sync命令后开始在后台保持快照(RDB持久化,主从复制时会触发RDB)

同时收集所有接受到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后,

master将rdb快照文件和所有缓存的命令发送到所有slave,以完成一次完全同步

而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化
3、心跳持续,保持通信

master发出ping包的周期,默认是10秒

在redis.conf repl-ping-replica-period 10
4、进入平稳,增量复制

master继续将新的所有收集到的修改命令自动依次传给slave,完成同步
5、从机下线,重连续传

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

主从复制的缺点

默认情况下,主机宕机,从机不会自动变成主机,需要人工干预。

相关推荐
weixin_5318042438 分钟前
SQL优化技巧(如查询优化、索引优化)。分布式系统的基本概念及挑战(如数据一致性、服务发现、负载均衡)
数据库·sql·服务发现
一 乐1 小时前
考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
java·数据库·学习·考研·微信·小程序·源码
一 乐1 小时前
租拼车平台|小区租拼车管理|基于java的小区租拼车管理信息系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·微信·notepad++·拼车
BillDev2 小时前
Oracle创建用户报错-ORA-65096: invalid common user or role name
数据库·oracle
szial2 小时前
深入理解SQL模糊查询中的特殊字符处理——以DB2为例
数据库·sql
jxxchallenger2 小时前
踩坑spring cloud gateway /actuator/gateway/refresh不生效
java·数据库·gateway
茶卡盐佑星_2 小时前
强缓存和协商缓存的区别
缓存
肥or胖2 小时前
【MySQL】索引
linux·数据库·mysql
Kiwi233332 小时前
产品经理-需求分析
数据库·产品经理·需求分析
读心悦3 小时前
修改 MySQL 数据库中的唯一键
数据库·mysql