三网合一网站建设程序,常用软件开发模型,网站的运营成本,设计动漫的软件这里写目录标题一、主从复制简介1.1原理1.2 主从复制的作用二、主从复制工作流程2.1 建立连接2.1.1 master和slave连接流程2.1.2 master和slave互联2.1.3主从断开连接#xff08;了解#xff09;2.1.4 授权访问#xff08;了解#xff09;2.2 数据同步2.3 命令传播2.3.1 命…
这里写目录标题一、主从复制简介1.1原理1.2 主从复制的作用二、主从复制工作流程2.1 建立连接2.1.1 master和slave连接流程2.1.2 master和slave互联2.1.3主从断开连接了解2.1.4 授权访问了解2.2 数据同步2.3 命令传播2.3.1 命令传播阶段的部分复制一、主从复制简介 为了避免单点Redis服务器故障准备多台服务器互相连通。将数据复制多个副本保存在不同的服务器上连接在一起并保证数据是同步的。即使有其中一台服务器宕机其他服务器依然可以继续提供服务实现Redis的高可用同时实现数据冗余备份。
1.1原理 Redis支持主从复制Redis的主从结构可以采用一主多从常用或者级联结构相对复杂Redis主从复制可以根据是否是全量分为全量同步和增量同步。
主服务器master从服务器slave概念主从复制即将master中的数据即时、有效的复制到slave中
特征一个master可以拥有多个slave一个slave只对应一个master
职责master和slave各自的职责不一样
master:
写数据执行写操作时将出现变化的数据自动同步到slave读数据可忽略slave:
读数据写数据禁止1.2 主从复制的作用
读写分离master写、slave读提高服务器的读写负载能力负载均衡基于主从结构配合读写分离由slave分担master负载并根据需求的变化改变slave的数 量通过多个从节点分担数据读取负载大大提高Redis服务器并发量与数据吞吐量故障恢复当master出现问题时由slave提供服务实现快速的故障恢复数据冗余实现数据热备份是持久化之外的一种数据冗余方式高可用基石基于主从复制构建哨兵模式与集群实现Redis的高可用方案
二、主从复制工作流程
主从复制过程大体可以分为3个阶段
建立连接阶段即准备阶段数据同步阶段命令传播阶段反复同步
2.1 建立连接
2.1.1 master和slave连接流程
建立slave到master的连接使master能够识别slave并保存slave端口号
流程如下
步骤1设置master的地址和端口保存master信息步骤2建立socket连接步骤3发送ping命令定时器任务步骤4身份验证步骤5发送slave端口信息
至此主从连接成功
当前状态
slave保存master的地址与端口
master保存slave的端口
总体之间创建了连接的socket
2.1.2 master和slave互联
可以通过三种方式实现主从连接
方式一客户端发送命令
slaveof masterip masterport这种方式在slave的客户端我是通过redis -cli -h ip地址 -p 端口号打开的输入命令slaveof 实现的。
方式二启动服务器参数
redis-server redis.conf --slaveof masterip masterport方式三服务器配置主流方式 在conf文件下添加配置
slaveof masterip masterportslave系统信息
master_link_down_since_seconds
masterhost masterportmaster系统信息
uslave_listening_port(多个)2.1.3主从断开连接了解
断开slave与master的连接slave断开连接后不会删除已有数据只是不再接受master发送的数据在slave客户端输入命令。
slaveof no one2.1.4 授权访问了解
master客户端发送命令设置密码
requirepass passwordmaster配置文件设置密码
config set requirepass password
config get requirepassslave客户端发送命令设置密码
auth passwordslave配置文件设置密码
masterauth passwordslave启动服务器设置密码
redis-server –a password2.2 数据同步
在slave初次连接master后复制master中的所有数据到slave将slave的数据库状态更新成master当前的数据库状态
同步过程如下
步骤1请求同步数据步骤2创建RDB同步数据步骤3恢复RDB同步数据步骤4请求部分同步数据步骤5恢复部分同步数据
至此数据同步工作完成
当前状态
slave具有master端全部数据包含RDB过程接收的数据
master保存slave当前数据同步的位置
总体之间完成了数据克隆
数据同步阶段master说明
1如果master数据量巨大数据同步阶段应避开流量高峰期避免造成master阻塞影响业务正常执行
2复制缓冲区大小设定不合理会导致数据溢出。如进行全量复制周期太长进行部分复制时发现数据已经存在丢失的情况必须进行第二次全量复制致使slave陷入死循环状态。
repl-backlog-size ?mbmaster单机内存占用主机内存的比例不应过大建议使用50%-70%的内存留下30%-50%的内存用于执 行bgsave命令和创建复制缓冲区
数据同步阶段slave说明
为避免slave进行全量复制、部分复制时服务器响应阻塞或数据不同步建议关闭此期间的对外服务
slave-serve-stale-data yes|no数据同步阶段master发送给slave信息可以理解master是slave的一个客户端主动向slave发送命令 多个slave同时对master请求数据同步master发送的RDB文件增多会对带宽造成巨大冲击如果master带宽不足因此数据同步需要根据业务需求适量错峰 slave过多时建议调整拓扑结构由一主多从结构变为树状结构中间的节点既是master也是 slave。注意使用树状结构时由于层级深度导致深度越高的slave与最顶层master间数据同步延迟 较大数据一致性变差应谨慎选择
2.3 命令传播
当master数据库状态被修改后导致主从服务器数据库状态不一致此时需要让主从数据同步到一致的状态同步的动作称为命令传播master将接收到的数据变更命令发送给slaveslave接收命令后执行命令
2.3.1 命令传播阶段的部分复制
命令传播阶段出现了断网现象
网络闪断闪连忽略
短时间网络中断部分复制
长时间网络中断全量复制