写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬( 二 )


写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
2. 使用配置文件启用在使用配置文件启动主从复制之前呢!先需要把之前使用客户端命令行连接的断开,再从主机执行slaveof no one即可断开主从复制 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
在哪可以查看从节点已经断开了主节点呢!在主节点的客户端输入命令行info查看
这张图是使用从节点使用客户端命令行连接主节点后,在主节点的客户端输入info打印的信息,可以看到有一个slave0的一个信息 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
这个图是在从节点执行完slaveof no one 后,在主节点打印的info,说明从节点已经跟主节点断开连接了 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
在根据配置文件启动redis服务,redis-server redis6380.conf
当在从节点重新启动后就可以在主节点直接查看到从节点的连接信息 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
测试数据,主节点写的东西,从节点还是会自动同步的 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
3. 启动redis服务器时启动这种方式配置也是很简单,在启动redis服务器时直接就启动主从复制,执行命令:redis-server --slaveof host port 即可 。
4. 主从复制启动后的日志信息查看这个是主节点的日志信息
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
这个是从节点的信息,其中有连接主节点信息,还有RDB快照保存 。
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
五、主从复制工作原理1. 主从复制的三个阶段主从复制完整的工作流程分为以下三个阶段 。每一段都有自己的内部工作流程,那么我们会对这三个过程进行谈论 。
  • 建立连接过程:这个过程就是slave跟master连接的过程
  • 数据同步过程:是master给slave同步数据的过程
  • 命令传播过程:是反复同步数据
2. 第一阶段:建立连接过程
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
上图是一个完整主从复制建立连接工作流程 。然后使用简短的话语来描述上边的工作流程 。
  1. 设置master的地址和端口,保存master的信息
  2. 建立socket连接(这个连接做的事情下文会说)
  3. 持续发送ping命令
  4. 身份验证
  5. 发送slave端口信息
在建立连接的过程中,从节点会保存master的地址和端口、主节点master保存从节点slave的端口 。
3. 第二阶段:数据同步阶段过程
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图
 
这张图是详细描述第一次从节点连接主节点时的数据同步过程 。
当从节点第一次连接主节点时,先会执行一次全量复制这次的全量复制是无法避免的 。
全量复制执行完成后,主节点就会发送复制积压缓冲区的数据,然后从节点就会执行bgrewriteaof恢复数据,这也就是部分复制 。
在这个阶段提到了三个新点,全量复制、部分复制、复制缓冲积压区 。会在下文的常见问题里详细说明这几个点 。
4. 第三阶段:命令传播阶段当master数据库被修改后,主从服务器的数据不一致后,此时就会让主从数据同步到一致,这个过程称之为命令传播 。
master会将接收到的数据变更命令发送给slave,slave接收命令后执行命令,让主从数据达到一致 。
命令传播阶段的部分复制
  • 在命令传播阶段出现断网的情况,或者网络抖动时会导致连接断开(connection lost)
  • 这个时候主节点master还是会继续往replbackbuffer(复制缓冲积压区)写数据
  • 从节点会继续尝试连接主机(connect to master)
  • 当从节点把自己的runid和复制偏移量发送给主节点,并且执行pysnc命令同步
  • 如果master判断偏移量是在复制缓冲区范围内,就会返回continue命令 。并且发送复制缓冲区的数据给从节点 。
  • 从节点接收数据执行bgrewriteaof,恢复数据
六. 详细介绍主从复制原理(全量复制+部分复制)
写给大忙人的Redis主从复制,花费五分钟让你面试不尴尬

文章插图


推荐阅读