replication

特性:

  • 异步复制数据到slave,存在数据丢失时间窗口,从 Redis 2.8 开始, 从服务器会以每秒一次的频率向主服务器报告复制流(replication stream)的处理进度。
  • 可以配置一主多从
  • 可以配置从服务器可以级联从服务器,既 M->S->S
  • M replication是非阻塞的(在replication期间,M依然能够处理客户端的请求)
  • S replication期间也是非阻塞的(也可以接受来自客户端的请求,但是它用的是之前的旧数据)可以通过配置来决定S是否在进行replication时用旧数据响应客户端的请求,如果配置为否,那么slave将会返回一个错误消息给客户端。不过当新的数据接收完全后,必须将新数据与旧数据替换,即删除旧数据,在替换数据的这个时间窗口内,slave将会拒绝客户端的请求和连接。需要注意的是:slave节点默认是不接受客户端请求的。

  • 当有需要使用到replication机制时,一般都会强烈建议把master的持久化开关打开。即使为了避免持久化带来的延迟影响,不把持久化开关打开,那么也应该把master配置为不会自动启动的。原因:

    master如果把持久化关闭,当意外重启时,会丢失全部数据,此时slave接口从master同步数据,会用空集合覆盖自己的数据,导致全部数据丢失。

  • 当master与slave之间的连接由于某些原因而断开时,slave能够自动重连Master,如果master收到了多个slave并发连接请求,它只会进行一次持久化,然后再把这一份持久化的数据发送给多个并发连接的slave

数据同步策略:

  • 2.8 版本之前,同步连接断开,重连之后会进行全量同步。

  • 2.8 版本之后,重连之后不一定需要全量同步,通常是增量同步。即将需要执行的操作同步从 master 同步到 slave。

results matching ""

    No results matching ""