Redis主从同步

Stella981
• 阅读 571

主从架构

主从架构设计的思路大概如下:

  • 只有一台主服务器,只负责写入数据,不负责读取数据。
  • 多台从服务器,不写入数据,只负责同步主服务器的数据,提供外部程序读取。
  • 主服务器写入数据后,将命令发送到从服务器,使主从数据同步。
  • 应用程序可以读取某一台从服务器的数据,负载均衡。
  • 当某些从服务器瘫痪时,系统影响不大。当主服务器瘫痪时,选举某一台从服务器成为主服务器

Redis主从同步

Redis主从同步

图中左边的流程是主服务器,而右边的流程为从服务器。
(1)无论如何要先保证主服务器的开启,开启主服务器后,从服务器通过命令或者重启配置项可以同步到主服务器。
(2)当从服务器启动时,读取同步的配置,根据配置决定是否使用当前数据响应客户端,然后发送 SYNC 命令。

当主服务器接收到同步命令的时候,就会执行 bgsave 命令备份数据,但是主服务器并不会拒绝客户端的读/写,而是将来自客户端的写命令写入缓冲区 。从服务器未收到主服务器备份的快照文件的时候,会根据其配置决定使用现有数据响应客户端或者拒绝。

(备注:bgsave命令,是一个异步保存命令,也就是系统将启动另外一个进程,把Redis的数据保存到对应的数据文件中。

bgsave和save命令最大的不同是它不会阻塞客户端的写入,也就是在执行bgsave的时候,允许客户端继续读/写Redis)
(3)当 bgsave 命令被主服务器执行完后,开始向从服务器发送备份文件,这个时候从服务器就会丢弃所有现有的数据,开始载入发送的快照文件。
(4)当主服务器发送完备份文件后,从服务器就会执行这些写入命令。此时就会把bgsave 执行之后的缓存区内的写命令也发送给从服务器,从服务完成备份文件解析,就开始像往常一样,接收命令,等待命令写入。
(5)缓冲区的命令发送完成后,当主服务器执行一条写命令后,就同时往从服务器发送同步写入命令,从服务器就和主服务器保持一致了。而此时当从服务器完成主服务器发送的缓冲区命令后,就开始等待主服务器的命令了。
以上就是Redis主从同步的过程。

只是在主服务器同步到从服务器的过程中,需要备份文件,所以在配置的时候一般需要预留 一些内存空间给主服务器,用以腾出空间执行备份命令。 一般来说主服务器使用50%~65%的内存空间 ,以为 主从复制留下可用的内存空间。

Redis多从机同步机制

如下图所示:

Redis主从同步

如果出现多台同步,可能会出现频繁等待和频繁操作 bgsave 命令的情况,导致主机在较长时间里性能不佳。

参考资料:

《SSM框架和Redis实现》

点赞
收藏
评论区
推荐文章
灯灯灯灯 灯灯灯灯
3年前
年后腾讯二面,第一个问MySQL主从结构,给我整不会了
一、MySQL一主一从数据库服务器192.168.4.51配置为主数据库服务器数据库服务器192.168.4.52配置为从数据库服务器客户端192.168.4.50测试配置其中192.168.4.51是主服务器,另一台192.168.4.52作为从服务器,通过调取主服务器上的binlog日志,在本地重做对应的库、表,实现与主服务器的数据同步
Peter20 Peter20
3年前
redis的三种集群方式
redis有三种集群方式:主从复制,哨兵模式和集群。1.主从复制主从复制原理:从服务器连接主服务器,发送SYNC命令;主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;从服务器收到
redis服务器有哪些架构?每个架构的优劣是什么?
一、架构分类1.单主架构:只有一个redis节点,如果这个节点挂了,整个redis服务就不可用,这个不能在生产环境使用,一般是本地开发使用;2.主从架构:一个master一个或者多个slaver,从服务器是主服务器的副本,从服务器也可以
Stella981 Stella981
3年前
Linux之sersync数据实时同步
sersync其实是利用inotify和rsync两种软件技术来实现数据实时同步功能的,inotify是用于监听sersync所在服务器上的文件变化,结合rsync软件来进行数据同步,将数据实时同步给客户端服务器。    工作过程:在同步主服务器上开启sersync,负责监听文件系统的变化,然后调用rsync命令把更新的文件同步到目标服务器上,主服务器上
Wesley13 Wesley13
3年前
Mongo服务器集群配置——主从复制
MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性;复制还允许您从硬件故障和服务中断中恢复数据。MongoDB复制原理mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。mon
Wesley13 Wesley13
3年前
Mysql数据库 主从复制的作用原理
主从的作用1.实时灾备:一台主数据库宕机了,启用从数据库,用于故障切换2.读写分离:主服务器只用于写操作,从服务器只用于读取,支持了更大的并发3.备份:可以解决数据丢失的问题,避免影响业务主从原理1、主库接收到更新命令,执行更新操作,生成binlog2、从库sal
Wesley13 Wesley13
3年前
MySQL主从配置
本文索引:MySQL主从介绍准备工作配置主配置从测试主从同步MySQL主从介绍MySQL主从又叫做Replication、AB复制。简单将就是A/B两个服务器做主从后,在A上写数据,B也会跟着写数据,两者数据是实时同步的。MySQL主从是基于binlog的,主服务器需要开启
Wesley13 Wesley13
3年前
mysql主从复制原理
MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器。mysql主(称master)从(称slave)复制的原理:1、master将数据改变记录到二进制日志(binarylog
Stella981 Stella981
3年前
Linux Centos下MySQL主从Replication同步配置(一主一从)
MySQL主从复制概念MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。 !(https://img2018.cnblogs.c
Wesley13 Wesley13
3年前
mysql数据库备份之主从同步配置
主从同步意义?主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据