两万字 redis.conf 7.0 配置和原理全解,生产王者必备( 三 )


关闭了这个功能,RDB 内存快照文件的校验就是 0 ,代码会自动跳过检查 。
推荐你关闭,让我快到令人发指 。
你还可以通过 dbfilename 参数来指定 RDB 内存快照文件名,默认是 dbfilename dump.rdb 。
5、rdb-del-sync-files
默认配置是 rdb-del-sync-files no,主从进行全量同步时,通过传输 RDB 内存快照文件实现,没有开启 RDB 持久化的实例在同步完成后会删除该文件,通常情况下保持默认即可 。
6、dir
我的工作目录,注意这是目录而不是文件,默认配置是dir ./ 。比如存放 RDB 内存快照文件、AOF 文件 。
三、主从复制这部分配置很重要,涉及到主从复制的方方面面,是高可用的基石,重点对待啊伙计们 。
1、replicaof
主从复制,使用replicaof <masterip> <masterport> 配置将当前实例成为其他 Redis 服务的从节点 。

  • masterip,就是 master 的 IP 。
  • masterport,master 的端口 。
有以下几点需要注意 。
  • 我使用异步实现主从复制,当 Master 节点的 slave 节点数量小于指定的数量时,你可以设置 Master 节点停止处理写请求 。
  • 主从复制如果断开的时间较短,slave 节点可以执行部分重新同步,需要合理设置 backlog size,保证这个缓存区能完整保存断连期间 Master 接受写请求的数据,防止出现全量复制,具体配置后面会细说 。
  • 主从复制是自动的,不需要用户干预 。
2、masterauth
如果当前节点是 slave,且 master 节点配置了 requirepass 参数设置了密码,那么 slave 节点必须使用该参数配置为 master 的密码,否则 master 节点将拒绝该 slave 节点的请求 。
配置方式为 masterauth <master-password> 。
3、masteruser
在 6.0 以上版本,如果使用了我的 ACL 安全功能,只配置 masterauth 还不够 。因为默认用户不能运行 PSYNC 命令或者主从复制所需要的其他命令 。
这时候,最好配置一个专门用于主从复制的特殊用户,配置方式为 masteruser <username> 。
4、replica-serve-stale-data
MySQL:“当 slave 节点与 master 失去连接,导致主从同步失败的时候,还能处理客户端请求么?”
slave 节点可以有以下两种行为来决定是否处理客户端请求 。
  • 配置为 yes,slave 节点可以继续处理客户端请求,但是数据可能是旧的,因为新的没同步过来 。也可能是空的,如果是第一次同步的话 。
  • 配置为 no,slave 节点将返回错误 MASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to no给客户端 。但是以下的指令还是可以执行:INFO, REPLICAOF, AUTH, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE,UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST,HOST and LATENCY 。
我的默认配置是 replica-serve-stale-data yes 。
5、replica-read-only
这个配置用于控制 slave 实例能否接收写指令,在 2.6 版本后默认配置为 yes,表示 slave 节点只处理读请求,如果为 no 则可读可写 。
我建议保持默认配置,让 slave 节点只作为副本实现高可用 。想要提高写性能,使用集群模式横向拓展更好 。
6、repl-diskless-sync
主从复制过程中,新加入的 slave 节点和 slave 节点重连后无法进行增量同步,需要进行一次全量同步,master 节点会生成 RDB 内存快照文件传输给 slave 节点 。
所以这个配置是用于控制传输方式的,传输方式有两种 。
  • Disk-backed(磁盘备份):master 节点创建新进程将 RDB 内存快照文件写到磁盘,主进程逐步将这个文件传输到不同 slave 节点 。
  • Diskless(无盘备份):master 节点创建一个新进程直接把 RDB 内存快照内容写到 Socket,不会将 RDB 内存快照文件持久化到磁盘 。
使用磁盘备份的方式,master 保存在磁盘的 RDB 内存快照文件可以让多个 slave 复用 。
使用无盘备份的话,当 RDB 内存快照文件传输开始,如果当前有多个slave 节点与 master 建立连接,我会使用并行传输的方式将 RDB 内容传输给多个节点 。
默认的配置是 repl-diskless-sync yes,表示使用无盘备份 。在磁盘速度很慢,而网络超快的情况下,无盘备份会更给力 。如果网络很慢,有可能会出现数据丢失,推荐你改成 no 。
7、repl-diskless-sync-delay
使用无盘复制的话,如果此刻有新的 slave 发起全量同步,需要等待之前的传输完毕才能开启传输 。


推荐阅读