Redis 主从架构之深扒配置文件(二)

「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」。

Redis 的配置文件配置比较多,我们将分几个章节依次击破,大家记得查看连载呦!我们接着上文中的配置信息继续往下说。

replica-serve-stale-data yes

当 replica 与 master 失去连接或者主从复制在进行时,replica 可以有两种不同的设置:

  • replica-serve-stale-data:yes(默认值),则 replica 仍将响应客户端请求,可能会有过期数据,或者如果这是第一次同步,则数据集可能为空。
  • replica-serve-stale-data:no , replica 将对所有请求命令(但不包含 INFO, replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST, HOST: and LATENCY)返回 SYNC with master in progress 的错误。

repl-diskless-sync

复制同步策略:磁盘(disk)或套接字(socket),默认为 no 使用 disk 。

新的 replicas 和重新连接的 replicas 如果因为接收到差异而无法继续复制过程,则需要执行“完全同步”。RDB 文件从 master 传送到 replicas,传输可以通过两种不同的方式进行:

  1. Disk-backed:Redis master 节点创建一个新的进程并将 RDB 文件写入磁盘,然后文件通过父进程增量传输给 replicas 节点;
  2. Diskless:Redis master 节点创建一个新的进程并直接将 RDB 文件写入到 replicas 的 sockets 中,不写到磁盘。
  • 当进行 disk-backed 复制时, RDB 文件生成完毕,多个 replicas 通过排队来同步 RDB 文件。
  • 当进行 diskless 复制时,master 节点会等待一段时间(下边的repl-diskless-sync-delay 配置)再传输以期望会有多个 replicas 连接进来,这样 master 节点就可以同时同步到多个 replicas 节点。如果超出了等待时间,则需要排队,等当前的 replica 处理完成之后在进行下一个 replica 的处理。

硬盘性能差,网络性能好的情况下 diskless 效果更佳

警告:无盘复制目前处于试验阶段

repl-diskless-sync-delay

当启用 diskless 复制后,可以通过此选项设置 master 节点创建子进程前等待的时间,即延迟启动数据传输,目的可以在第一个 replica 就绪后,等待更多的 replica 就绪。单位为秒,默认为5秒

repl-ping-replica-period 

Replica 发送 PING 到 master 的间隔,默认值为 10 秒。

Redis 的配置文件配置比较多,我们将分几个章节依次击破,大家记得查看连载呦!如果你有不同的意见或者更好的idea,欢迎联系阿Q,添加阿Q可以加入技术交流群参与讨论呦!

Guess you like

Origin juejin.im/post/7032620324466212878