Redis进阶篇06 — 复制技术(三)有关Redis复制的配置参数

前言

这里的配置参数即 /usr/local/redis/config/redis.conf 中的 REPLICATION 部分。

适用于 master 角色的配置参数

  • repl-diskless-sync yes – 复制时是否使用无盘同步。若网络速度很快,则推荐配置为 yes;如果 replica 数量很多,设置为 no 则会有较高的性能。当新的 replica 加入到了 主从复制 后,新的 replica 需要执行「全量同步」,master 此时会将 RDB 文件或文件内容传输到 replica 上,传输通过以下两种方式:

    • 磁盘备份(disk-backed):master 会创建一个新的进程,将 RDB 文件写入到磁盘中,稍后则通过 master 将该文件传输到 replica 上
    • 无盘(diskless):master 会创建一个新的进程,直接将 RDB 文件内容通过 socket 方式传输给 replica,不需要经过 master 的磁盘
  • repl-diskless-sync-delay 5 – 在使用 无盘 同步时,需要先确认各个 replica 是否可达,也就是传输 RDB 文件内容之前的等待时间,以秒为单位。

  • repl-diskless-sync-max-replicas 0 – Redis 7.0 中的配置。启用了无盘同步,预期要连接的 replica 数量,如果到达了定义的 replica 数量,则可以在 repl-diskless-sync-delay 之前开始复制同步工作。默认为 0 ,表示未定义最大数量

  • repl-ping-replica-period 10 – 默认被注释的行。master 定期向各个 replica 发送心跳 ping ,以探测它们是否还是存活的状态。默认10 秒发送一次

  • repl-disable-tcp-nodelay no – 同步之后,replica 的 socket 是否关闭 TCP-NODELAY。TCP-NODELAY 是 TCP 中的一个属性。

    • yes,使用较少的 TCP 数据包和较少的带宽向 replica 发送数据,但对于 replica 而言,会增加数据的延迟
    • no,数据出现在 replica 的延迟将减少,但会占用更多的带宽
  • repl-backlog-size 1mb – 默认被注释的行。设置 复制 时的 backlog 大小

  • repl-backlog-ttl 3600 – 默认被注释的行。backlog 的生存时间,以秒为单位

  • min-replicas-to-write 3min-replicas-max-lag 10 – 默认被注释的行。正常情况下,当 replica 失去了与 master 的连接后,master 不会采取任何措施和行为,继续提供读写操作。但有了这两个参数,则可以控制 master 的行为,这里指的是——若 replica 的可用活跃数量少于 3 个且最后一次成功通信的时间间隔小于等于 10 秒(也就是 master 发送心跳 ping 且成功回复之后的十秒之内),则 master 可能不再接受客户端的写操作。

适用于 replica 角色的配置参数

  • replicaof <masterip> <masterport> – 指定 master 的 IP 地址和端口

  • masterauth <master-password> – 指定认证的密码

  • replica-serve-stale-data yes – 当 replica 与 master 失去连接或复制同步工作正在进行时,replica 的运行方式:

    • 设置为 yes,表示 replica 继续响应客户端的 读 请求,但可能响应的是旧数据或空数据
    • 设置为 no,表示必须等待数据同步的工作完成,否则会出现「正在与 master 同步」(SYNC with master in progress)的错误
  • replica-read-only yes – replica 是否只读

  • repl-diskless-load disabled – replica 是否使用无盘加载。值可以有:

    • disabled,不使用 无盘加载,replica 先将同步过来的 RDB 文件存储到磁盘
    • on-empty-db,安全情况下的无盘加载,仅当当前数据集为空时才使用无盘加载,避免加载过程中同时加载新数据或旧数据
    • swapdb,直接通过 socket 获取 RDB 数据,并将解析出来的数据保存在内存中。这需要 replica 拥有足够多的空闲内存
  • repl-timeout 60 – 默认被注释的行。replica 复制的超时时间,默认 60 秒

  • replica-priority 100 – replica 的优先级,数字越小优先级越高。比如当 master 不再正常工作时,将根据各个 replica 中这个参数的值重新选举 master。这其实是哨兵模式里的内容。注意!设置为 0 的 replica 是不能成为 master 角色的

  • propagation-error-behavior ignore – 默认被注释的行。传播错误时的行为控制,为了解决数据不一致的问题,可以有:

    • ignore
    • panic
    • panic-on-replicas
  • replica-ignore-disk-write-errors no – 默认被注释的行。控制当 replica 无法从 master 接收到写入命令将数据写入到磁盘时的行为,设置为 no 可能会使 replica 崩溃。不建议修改为 yes

  • replica-announced yes – 默认被注释的行。哨兵模式里的内容。哨兵模式下,是否报告所有的 replica

  • replica-announce-ip 5.5.5.5replica-announce-port 1234 – 默认被注释的行。哨兵模式里的内容。master 可以通过不同的方式列出连接的 replica 的 IP 和端口。

用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇