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

Kev*_*ose 7 replication redis

目前还不清楚我从上复制文件的是否SYNC命令阻止.

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

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

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

ant*_*rez 18

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

所以顺序是:

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

如果主服务器未配置为保存,它也可以工作,只是它将生成一个.rdb,仅用于主< - >从属同步.在redis.conf中没有"保存"行配置的主实例中,BGSAVE不会自动调用,但如果需要保存.rdb文件,用户仍可以调用它.