Redis репликация для больших данных на новый ведомый - PullRequest
0 голосов
/ 30 октября 2019

У меня есть Redis Master, который имеет 30 ГБ данных и памяти там 90 ГБ. У нас есть эта настройка, так как у нас меньше записей и больше чтений. Обычно у нас был бы ОЗУ размером 3X дБ.

Проблема здесь в том, что один раб испортился, а позже, когда мы добавили его обратно с помощью стража. он застрял в состоянии wait_bgsave на главном устройстве (после просмотра информации о главном устройстве)

Причина была в том, что:

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

Это было установлено на главном устройстве, и, так как максимальная память недоступна, он ломаетсярепликация для нового раба. Я видел этот вопрос Репликация Redis и ограничение клиентского выходного буфера , где обсуждается аналогичная проблема, но у меня более широкий круг вопросов.

Мы не можем использовать много памяти,Итак, каковы возможные способы выполнить репликацию в этом контексте, чтобы предотвратить любой сбой на главном сервере (в отношении воздействия на память и задержку)

У меня есть несколько соображений: 1 - следует ли выполнять репликацию без диска - будет ли этоиметь какое-либо влияние на задержку записи и чтения? 2 - Должен ли я просто скопировать файл дампа с другого ведомого на это новое ведомое устройство и перезапустить Redis. ? будет ли это работать. 3 - Должен ли я увеличить ведомый выходной буфер-предел до большего предела? Если да, то сколько? Я хочу сделать это в течение некоторого времени, пока не произойдет репликация, а затем вернуться к нормальной настройке? Я скептически отношусь к этому подходу.

1 Ответ

1 голос
/ 31 октября 2019

У вас есть эта проблема, потому что у вас медленная реплика, и она не может читать данные репликации так быстро, как необходимо.

Чтобы решить проблему, вы можете попытаться увеличить буфер client-output-buffer-limitпредел. Также вы можете попытаться отключить постоянство на реплике при синхронизации с мастером и включить сохранение после этого. Отключив постоянство, реплика может потреблять данные быстрее. Однако, если пропускная способность между мастер и репликой действительно мала, вам может понадобиться перераспределить реплику, чтобы она была рядом с мастером и имела большую пропускную способность. Бездисковая репликация - повлияет ли она на задержку записи и чтения?

ИМХО, я думаю, что это не имеет ничего общего с бездисковой репликацией.

2 - Должен ли япросто скопируйте файл дампа с другого ведомого на это новое ведомое устройство и перезапустите redis. ? будет ли это работать.

НЕТ, это не сработает.

3 - Должен ли я увеличить ведомый выходной буфер до предела? Если да, то сколько? Я хочу сделать это в течение некоторого времени, пока не произойдет репликация, а затем вернуться к нормальной настройке?

ДА, вы можете попытаться увеличить предел. И в вашем случае, поскольку ваш размер данных составляет 30 ГБ, жесткое ограничение в 30 ГБ должно решить проблему. Однако это слишком много и может оказать другое влияние. Чтобы получить правильный предел, необходимо выполнить некоторые тесты.

ДА, вы можете динамически изменить этот параметр с помощью команды CONFIG SET.

...