【问题标题】:Redis replication for large data to new slaveRedis 将大数据复制到新的从站
【发布时间】:2019-10-30 12:02:34
【问题描述】:

我有一个 redis master,它有 30 GB 的数据和 90 GB 的内存。我们有这样的设置,因为我们有更少的写入和更多的读取。通常,我们会有 3X db 大小的 RAM 机器。

这里的问题是,一个从站损坏了,后来我们使用哨兵将它添加回来。它卡在 master 上的 wait_bgsave 状态(在看到 master 上的信息后)

原因是:

 client-output-buffer-limit slave 256mb 64mb 60

这是在主服务器上设置的,由于最大内存不可用,它会破坏新从服务器的复制。 我看到这个问题Redis replication and client-output-buffer-limit 正在讨论类似的问题,但我的问题范围更广。

我们不能使用大量内存。那么,在这种情况下,有哪些可能的方法来进行复制以防止 master 上的任何故障(wrt。内存和延迟影响)

我有几件事要考虑: 1 - 我应该进行无盘复制 - 它会对写入和读取的延迟有任何影响吗? 2 - 我是否应该将转储文件从另一个从站复制到这个新从站并重新启动 redis。 ?那行得通吗? 3 - 我应该将输出缓冲区限制从站增加到更大的限制吗?如果是,那么多少钱?我想这样做一段时间,直到复制发生,然后将其恢复为正常设置?我对这种方法持怀疑态度。

【问题讨论】:

    标签: redis replication


    【解决方案1】:

    您遇到了这个问题,因为您的副本速度较慢,它无法按需要快速读取复制数据。

    为了解决问题,可以尝试增加client-output-buffer-limit缓冲区限制。您也可以尝试在从 master 同步时禁用副本的持久性,然后再启用持久性。通过禁用持久性,副本可能会更快地消耗数据。但是,如果master和replica之间的带宽真的很小,你可能需要考虑重新部署你的replica,让它靠近master,并且有很大的带宽。

    1 - 我是否应该进行无盘复制 - 它会对写入和读取的延迟有任何影响吗?

    恕我直言,我认为这与无盘复制无关。

    2 - 我是否应该将转储文件从另一个从站复制到这个新从站并重新启动 redis。 ?会有用吗?

    不,它不会起作用。

    3 - 我应该将输出缓冲区限制从站增加到更大的限制吗?如果是,那么多少钱?我想这样做一段时间,直到复制发生,然后将其恢复为正常设置?

    是的,您可以尝试增加限制。在您的情况下,由于您的数据大小为 30G,因此 30G 的硬限制应该可以解决问题。但是,这太多了,并且可能会产生其他影响。您需要做一些基准测试才能获得正确的限制。

    是的,您可以通过CONFIG SET 命令动态更改此设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 2014-03-22
      • 1970-01-01
      • 2017-02-15
      相关资源
      最近更新 更多