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

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

上文中我们简单介绍了 Redis 主从复制的基本概念,为了让大家对概念有更清晰的认识,我们先来看一下配置文件中主从复制的参数介绍。

REPLICATION

replicaof <masterip> <masterport>

通过设置 master 的 ip 和 port ,可以使当前的 Redis 实例成为另一台 Redis 实例的副本。在Redis启动时,它会自动从 master 进行数据同步。

  • Redis 复制是异步的,可以通过修改 master 的配置,在 master 没有与给定数量的 replica 连接时,主机停止接收写入;
  • 如果复制链路丢失的时间相对较短,Redis replica 可以与 master 执行部分重新同步,可以使用合理的 backlog 值来进行配置(见下文);
  • 复制是自动的,不需要用户干预。在网络分区后,replica 会自动尝试重新连接到 master 并与 master 重新同步;

masterauth <master-password>

当 master 设置了密码保护时,replica 服务连接 master 的密码

replica-read-only

可以将 replica 配置为是否只读,yes 代表为只读状态,将会拒绝所有写入命令;no 表示可以写入。 从 Redis 2.6 之后, replica 支持只读模式且默认开启。可以在运行时使用 CONFIG SET 来随时开启或者关闭。

对 replica 进行写入可能有助于存储一些临时数据(因为写入 replica 的数据在与 master 重新同步后很容易被删除),计算慢速集或排序集操作并将其存储到本地密钥是多次观察到的可写副本的一个用例。但如果客户端由于配置错误而向其写入数据,则也可能会导致问题。

级联结构中即使 replica B 节点是可写的,Sub-replica C 也不会看到 B 的写入,而是将拥有和 master A 相同的数据集。

设置为 yes 并不表示客户端用集群方式以 replica 为入口连入集群时,不可以进行 set 操作,且 set 操作的数据不会被放在 replica 的槽上,会被放到某 master 的槽上。

注意:只读 replica 设计的目的不是为了暴露于互联网上不受信任的客户端,它只是一个防止实例误用的保护层。默认情况下,只读副本仍会导出所有管理命令,如CONFIG、DEBUG 等。在一定程度上,可以使用rename-command来隐藏所有管理/危险命令,从而提高只读副本的安全性

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

猜你喜欢

转载自juejin.im/post/7032085705966911519