降低数据不一致的出现几率
本章前面在介绍复制原理时曾经提到过,因为复制的在线更新操作以异步方式进行,所以当主从服务器之间的连接不稳定,又或者从服务器未能收到主服务器发送的更新命令时,主从服务器就会出现数据不一致的情况。
为了尽可能地降低数据不一致的出现几率,Redis 从 2.8 版本开始引入了两个以 min-replicas
开头的配置选项:
- min-replicas-max-lag <seconds>
- min-replicas-to-write <numbers>
用户设置了这两个配置选项之后,主服务器只会在从服务器的数量大于等于 min-replicas-to-write
选项的值,并且这些从服务器与主服务器最后一次成功通讯的间隔不超过 min-replicas-max-lag
选项的值时才会执行写命令。
举个例子,假设我们想要让主服务器只在拥有至少 3 个从服务器,并且这些从服务器与主服务器最后一次成功通讯的间隔不超过 10 秒钟的情况下才执行写命令,那么可以使用配置选项:
- min-replicas-max-lag 10
- min-replicas-to-write 3
通过使用这两个配置选项,我们可以让主服务器只在主从服务器连接良好的情况下执行写命令。因为在线更新的异步性质,min-replicas-max-lag
和 min-replicas-to-write
并没有办法完全地杜绝数据不一致出现,但它们可以有效地减少因为主从服务器连接不稳定而导致的数据不一致,并降低因为没有从服务器可用而导致数据丢失的可能性。