Как без простоев добавить в продакшн еще один шард для базы данных tarantool?

В продакшене мы используем базу данных tarantool (сегментированную с помощью vshard). Мы начали сразу с 4-х осколков. Теперь мы хотим увеличить его до 6 без простоев. Но после добавления еще двух осколков срабатывает ребалансировка, которая не позволяет выполнять чтение / запись. Есть ли способ, при котором ребалансировка может происходить при поддержке всех видов операций? Мы можем позволить себе увеличить время работы. Но он должен иметь успех. Как лучше всего добавить осколок в tarantool с минимальными неудобствами, вызываемыми продуктом?

В настоящее время единственное решение, которое мы можем придумать, - это перейти в режим обслуживания и выполнить ребалансировку за минимально возможное время !!!


person jeevan sirela    schedule 07.06.2019    source источник


Ответы (1)


Вы не можете писать в сегмент, который передается прямо сейчас, но вы не можете писать в другие сегменты (так что не похоже, что весь сегмент заблокирован).

Более того, вы можете смягчить эффект, сделав сегменты меньше (увеличьте bucket_count) - сделав перебалансировку медленнее, чтобы меньшее количество сегментов передавалось одновременно (конфигурация ребалансировки).

Предположим, у вас есть 16384 ведра, а ваш набор данных составляет 75 ГБ. Это означает, что средний размер корзины составляет около 5 Мбайт. Если вы уменьшите параметр rebalancer_max_receiving до 10, у вас будет только 10 ведер (50 МБ), передаваемых одновременно (что делает его заблокированным для записи).

Таким образом, ребалансировка будет довольно медленной, НО, учитывая, что ваши клиенты могут выполнять повторные попытки, а ваша сеть между шардами достаточно быстра, эффект «блокировки записи» должен остаться незамеченным.

person Dmitry Sharonov    schedule 07.06.2019
comment
Кроме того, вы можете голосовать за github.com/tarantool/vshard/issues/73, который полностью решает вопрос. - person Dmitry Sharonov; 07.06.2019