美文网首页程序员
Redis主从同步

Redis主从同步

作者: 秃头哥编程 | 来源:发表于2018-08-27 21:30 被阅读0次

Redis的性能很好,但在某些情况下还是不能满足我们的需求,比如过多的用户进入主页,导致Redis被频繁访问,此时就存在大量的读操作。在一些秒杀场景中,一瞬间有成千上万的读请求到达Redis服务器,显然单靠一台Redis服务器是不够的。一些服务网站对安全性有较高的要求,当主服务器不能工作的时候,需要从服务器代替原来的主服务器,作为灾备,以保证系统可以正常运行。因此更多的时候我们希望读写分离,读写分离的前提是读操作远远比写操作频繁的多,如果把数据存放在多台服务器上那么就可以从多台服务器上读取数据,从而消除了单台服务器的压力,读写分离的技术已经广泛用于数据库中。

一、主从同步的概念

互联网系统一般是以主从架构为基础的,所谓主从架构的大致思路是:

  • 在多台数据服务器中,只有一台主服务器,而主服务器只负责写入数据,不负责让外部程序读取数据。

  • 存在多台从服务器,从服务器不写入数据,只负责同步主服务器的数据,并让外部程序读取数据。

  • 主服务器在写入数据后,立刻将写入数据的命令发送给从服务器,从而使得主从数据同步

  • 应用程序可以随机读取某一台从服务器的数据,这样就分摊了读数据的压力。

  • 当某台从服务器不能工作的时候,整个系统将不受影响,当主服务器不能工作的时候,可以方便地从从服务器中选取一台来当主服务器。

主从同步机制

二、Redis主从同步配置

对Redis进行主从同步的配置分为主机和从机,主机是一台,而从机可以是多台。

首先,明确主机。当你能确定哪台机子是主机的时候,关键的两个配置是dir和dbfilename选项,dir的默认值是“./”,而dbfilename的默认值是“dump.rdb”。也就是说Redis默认采用当前目录的dump.rdb文件进行同步。

其次,在明确了从机之后,进行进一步的配置所要关注的只有slaveof这个配置选项。它的配置格式如下

slaveof server port

其中,server代表主机,port代表端口。当从机Redis服务重启时,就会同步对应主机的数据。当不想让从机继续复制主机的数据时,可以在从机的的Redis命令客户端发送slaveof no one命令,这样从机就不会再接收主机服务器的数据更新了。又或者原来主服务器无法工作,而你需要复制新的主机,这时执行slaveof server port就能让从机复制另外一台主机的数据了。

在实际的Linux环境中,配置文件redis.conf中还有一个bind配置,默认为127.0.0.1,也就是只允许本机访问,把它修改为0.0.0.0,其他服务器就能访问了。

三、Redis主从同步的过程

Redis主从同步

下面是文字描述:
(1)无论何时都要先保证主服务器的开启,开启主服务器后,从服务器通过命令或者重启配置项就能同步到主服务器。
(2)当从服务器启动时,会根据配置决定是否使用当前数据响应客户端,然后发送SYNC命令。当主服务器接收到同步命令后,就使用bgsave命令备份数据,但并不会拒绝客户端的写,而是把客户端的写命令缓存在缓冲区,从服务器在没收到主服务器的快照文件前, 根据配置决定使用现有数据响应客户端或者拒绝。
(bgsave命令是一个异步命令,也就是系统将启动另一个进程,把Redis的数据保存到对应的数据文件中。它和save命令最大的不同是不会阻塞客户端的写入。默认情况下,如果Redis执行bgsave命令失败,Redis将停止接受写操作,这样能让用户知道数据不能正确持久化到磁盘。)
(3)bgsave命令被主服务器执行完后,开始向从服务器发送备份文件,这个时候从服务器会丢弃所有现有命令,开始载入发送的快照文件。
(4)当主服务器发送完备份文件后,从服务器就会执行这些写入命令,此时就会把bgsave执行之后的缓冲区内的写命令发送给从服务器,从服务器完成备份文件解析,就开始正常接收命令。
(5)缓存区的命令发送完毕后,主服务器每执行一条写命令,就向从服务器发送该条写命令,保证主从同步。

只是在主服务器同步到从服务器的过程中,需要备份文件,所以在配置的时候,一般需要预留一些内存空间给主服务器,用以腾出空间执行备份命令。

还有可能出现多个从服务器同时向主服务器发送SYNC命令


多从机同步机制

如果出现多台同步,可能会出现频繁等待和频繁操作bgsave命令的情况,导致主机在较长时间性能不佳,这个时候可以考虑主从链进行同步的机制,以减少这种可能。

相关文章

  • Redis持久化、主从复制

    Redis持久化、主从复制 [TOC] redis持久化 RDB & AOP redis主从同步策略 一、pers...

  • redis 主从同步-slave端

    redis 主从命令  redis的主从同步始于命令SLAVEOF host port,通过这个命令能够建立主从关...

  • Redis系列之:Redis主从同步,读写分离

    1. Redis主从同步 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/...

  • redis 主从同步-master端

    redis 主从同步master端处理  redis 主从同步的过程始于一系列类似tcp三次握手的过程,归于"sy...

  • redis缓存服务

    1.redis master-slave同步详细过程 Redis 支持主从复制分为全量同步和增量同步, 首次同步是...

  • redis 基于sentinel实现主从架构的高可用

    redis主从复制原理 1、配置redis主 2、配置redis从(多个从节点配置方法相同) 3、验证主从数据同步...

  • Redis高可用架构之主从同步

    CAP原理 最终一致性 Redis提供的同步机制 主从同步 丛丛同步 缓解master节点的压力 Redis的同步...

  • Redis 数据同步机制

    Redis的主从同步机制可以确保redis的master和slave之间的数据同步。Redis在2.8及以上版本使...

  • redis-3

    redis-3 redis高可用 redis主从同步 全量同步 步骤: 主服务器开启BG SAVE写RDB文件 主...

  • Redis 主从同步

    同步过程 Redis 支持主从复制分为全量同步和增量同步,首次同步是全量同步,主从同步可以让从服务器从 主服务器备...

网友评论

    本文标题:Redis主从同步

    本文链接:https://www.haomeiwen.com/subject/rkfziftx.html