添加redis slave是否会向master发出阻塞调用?

时间:2011-01-31 17:50:01

标签: replication redis

documentation on replication SYNC command是否阻止,我不清楚。

似乎不应该(毕竟,启动一个新的奴隶会阻止服务请求),但我想确认一下。

对于上下文,我正在考虑将主机添加到托管大约8GB数据但没有磁盘同步*的主机。

*从历史上看,数据丢失并不是一个问题。我们正在改变这一点,因此复制和持久性正在“反向移植”到一定程度。

1 个答案:

答案 0 :(得分:18)

主设备只会在来自从设备的SYNC请求上执行BGSAVE,因此它不是阻塞操作。

所以顺序是:

  • 奴隶要求SYNC
  • 掌握BGSAVE,奴隶等待
  • 主BGSAVE完成后,初始批量数据(.rdb文件)被转移到奴隶
  • master累积了奴隶的所有新差异​​
  • master完成将整个初始rdb文件发送到slave
  • 主站开始向从站提供累积缓冲区,以及从客户端到达的任何新内容,如果它们是写入的。

如果未将主设备配置为保存,它也可以工作,只需为主设备生成.rdb< - >从同步。在redis.conf中没有“保存”行配置的主实例中,BGSAVE不会自动调用,但如果需要保存.rdb文件,用户仍可以调用它。