Redis将大数据复制到新的slave

问题描述 投票:0回答:1

我有一个redis master,它具有30 GB的数据,而内存是90 GB。我们拥有这种设置,因为写入次数更少,读取次数更多。通常,我们将拥有3倍db大小的RAM计算机。

这里的问题是,一个奴隶损坏了,后来当我们使用哨兵把它重新加回去时。它在主服务器上陷入了wait_bgsave状态(在看到主服务器上的信息之后)

原因是:

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

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

我们不能使用很多内存。因此,在这种情况下,有哪些可能的方法来进行复制以防止主服务器发生任何故障(写入内存和延迟影响)

我脑子里没几件事:1-我应该进行无盘复制吗?它会对读写延迟产生任何影响吗?2-我是否应该将转储文件从另一个从站复制到此新从站,然后重新启动Redis。 ?可以的。3-我应该将输出缓冲区限制从站增加到更大的限制吗?如果是,那么多少钱?我想做一段时间直到复制发生,然后将其恢复为正常设置?我对此方法表示怀疑。

redis replication
1个回答
0
投票

您有此问题,因为您的副本很慢,并且它无法按需要快速读取复制数据。

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

1-我应该进行无盘复制吗?它会对读写延迟产生任何影响吗?

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

2-我是否应该将转储文件从另一个从站复制到此新从站,然后重新启动Redis。 ?那行得通。

不,它不起作用。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.